2011-08-22 60 views
9

在Firefox(我猜Firefox 4以後),我們有about:memory頁面。即使我對C/C++動態內存管理非常熟悉,我也不得不承認我不知道如何閱讀該頁面。如何正確讀取Firefox「about:memory」?

我希望about:memory能夠讓我作爲JavaScript /前端開發人員,在ECMAScript和/或DOM腳本中創建一個檢測/查找內存泄漏的更好方法。我正在測試Windows 7和Mac OS X Snow Leopard系統。

所以我有幾個問題,希望有人可以回答這些(請不要猜測,如果你不確定)。

  • Windows 7區別win32/privatebytesMemory in use

這真讓我很煩惱。如果我正在做一些重ECMAScript/DOM操作,前者的價值似乎增加到了最後,相比之下Memory in use保持「小」。 這裏哪個值真的很有趣?它看起來像win32 privatebytes是你可以在你的任務管理器中看到的相同的值。

  • Memory mappedMemory in use有什麼區別?

我在這一個上搜索了很長一段時間。有人說它表示有多少內存在使用中是分散的。這是什麼意思詳細?這是內存泄漏的直接指標嗎?

如果有人能夠解釋大部分值(或者鏈接我找不到的資源),我會很高興。但是,對我來說最有趣的是這些win32私人字節和瀏覽器內存使用率之間的巨大差距。 Max OS X似乎沒有這些值的等價物,我想這是因爲一個基本不同的內存管理系統。

+1

你應該更新你的Firefox。 Firefox 6中提到的類別不再存在,該列表更容易理解。 –

+0

@Wladimir:的確如此。 FF6使它更加清晰。 – jAndy

回答

1

你應該只關心實際使用的內存由瀏覽器。由於內存碎片等原因,在操作系統級別總是會分配更多的內存。但這確實是瀏覽器開發人員需要考慮的問題。如果您看到可複製的病態行爲 - 提交Mozilla錯誤(需要最小化測試用例)。但除此之外,您只應確保代碼不會囤積無法釋放的對象(可以使用內存來看)。

我不確定是否在新版本的about:memory中甚至可以使用新名稱顯示「內存映射」。我很確定你不應該關心它。這是分配給它的地址的內存量,這在操作系統級別上只是有趣的。

1

該Mozilla博客似乎可以解釋它相當不錯,如果沒有,那麼你已經有了一個人的聯繫方式,誰知道:

http://blog.mozilla.com/nnethercote/2011/05/23/a-better-aboutmemory-stage-1-75/

+0

很好的資源謝謝。但我對這裏顯示的視圖感到困惑,至少與FF5看起來很不一樣。這些「隱式」和「顯式」的alloc很好,但在我看來並不明顯。 – jAndy

+0

啊,是的,這是一個恥辱 - 特別是FF4的觀點,我剛剛更新我的本地安裝到FF5,它看起來也不同。點擊「詳細」鏈接是否有幫助? –

+0

這就是說,博客海報已經表明,這個新視圖是前兩棵樹的組合,儘管他繼續看到你可能會錯過一些操作系統級別的分配,儘管表示了整個堆;他還將增加一些內存記者的「重要的操作系統級別分配」,這可能對你來說有些用處。 –

0

回答在線程的標題一般的問題,而不是具體的問題,這些問題似乎得到解決:

  • 哈弗你感興趣的測量,他們有一些解釋提示。
  • 如果您對細節感興趣,有時可以閱讀該措施背後的討論(在bugzilla中)。
    要查找討論,請在mozilla代碼中搜索度量名稱,例如http://mxr.mozilla.org/mozilla-central/search?string=heap-dirty,選擇'Hg Blame'鏈接,點擊度量名稱的行之前的鏈接(它看起來像<user>@<revid>),然後單擊更改集鏈接(如changeset NNNNNN a6b3a22fbca7),然後單擊錯誤鏈接。