Valandil 寫:
在windows下用firefox 1.0時,
發現再同一個視窗開多個tab
然後再關閉幾個tab
在狂開tab
反覆以上動作
每個tab中 最好有大張的圖檔
(尤其是逛相簿的網站可以測試)
就會發現開沒多就 硬碟就開始swap
fire fox的記憶體使用量 就暴增上百MB
很像 fire fox在關閉一個tab時
設計上並未考慮到將記憶體釋放掉有人也碰到這樣嗎?

我現在用官方的 firefox 1.0 沒有這種現象。
利用工作管理員看的,原本記憶體是 5x K,
開很多圖的網頁連開四個,衝到 28x K,
關掉那四個,掉回 5x K。
我之前用加速板的時候是有你說的情形,
不過你再多測試一下,它記憶體增長並不是每次都會發生,
通常是開很多分頁後(或是載入很多圖以後),
突然一下子跳了幾十 K,然後維持這個大小,
這時候你再開一兩個分頁(不要那種很多圖的,一般的就好),
它仍然是那個大小,不會再增加,
繼續開到一個臨界點以後,又會再一次跳幾十 K 上去。
關掉分頁它的確不會放掉記憶體,
但是如果你的需求量沒有超過現在佔有的記憶體數量,
它也不會再往上增加。
這種現象比較像是 memory pool(記憶池)的管理策略,而不是 memory leak(記憶體遺失)。
這兩者有著微妙的不同,有興趣的話可以找程式設計的相關書籍來研究,
或者只要知道這一點就好:
memory leak 可能無限擴大而無法收拾;
但是 memory pool 絕不會超過使用者申請的最大值。
是的,它的記憶體使用量只會增加不會減少,
但是別擔心,一切都在控制之下,不會爆炸的。
這種管理策略的目的是為了減少配置與釋放記憶體的次數,(那些動作很慢)
以達到加速的目的。
最後,我要聲明一下,
以上是我觀察並推論的結果,
我沒有看過 source code,也許我猜錯了也不一定,
不過我想應該是這樣。