2012-11-10 25 views
16

我正在一個WebGL項目中運行一些內存使用測試。如果我在Google Chrome上啓動該頁面並在Developers Tool的Profiles標籤上獲取堆快照,則會說我的頁面持有7.5 MB。Chrome堆堆快照 - 爲什麼它不顯示所有分配的內存?

問題是如果我查看任務管理器,它使用的真實值幾乎爲1 GB!這是預料之中的,因爲我真的迫使頁面有成千上萬的對象,但問題是:爲什麼Chrome向我顯示我只用了7.5 MB?

+0

Chrome的進程分佈在插件,選項卡和主要的Chrome服務中。你想要什麼快照? – TheZ

+0

@TheZ我真正想知道的是我的頁面正在使用的內存量。 –

+0

你應該在http://crbug.com提交一個錯誤 – gman

回答

12

更新

有那能告訴你的本機內存圖形本機內存快照。 不幸的是我們刪除了它,因爲它是一段脆弱的代碼。 它需要數百個類的非平凡工具,並影響二進制大小。 我希望稍後重新實現。

它需要使用Javascript堆的快照。所有的JavaScript對象都使用7.5MB。此大小不包括圖像,畫布,音頻文件,插件數據等。

DevTools中存在本機內存快照。 它計算渲染器進程使用的非JavaScript內存,但這是一個實驗性功能。

您需要在chrome://flags中啓用DevTools實驗功能,重啓瀏覽器,在DevTools設置面板中啓用Native Memory Profiler實驗功能,然後重新打開DevTools。

完成所有這些步驟後,您將可以在Profiler面板中使用本機內存快照。 並非本地內存堆中的所有內存塊都被計算在內,但我們正在努力。請使用Canary version of Chrome。 它每天更新並與其他版本的Chrome並行工作。

如果您的頁面佔用千兆字節的內存,並且有大的「其他」欄,超過10%-20%,請將相關郵件放到Google Chrome Developer Tools Foums

+0

不幸的是,谷歌已經從實驗開發工具中刪除了本機內存快照功能。我不知道爲什麼。但這意味着這個答案不再有效:/ – UpTheCreek

+0

有本地內存快照,能夠向您顯示本機內存圖。不幸的是我們刪除了它,因爲它是一段脆弱的代碼。它需要上百種類的非平凡儀器,並影響二進制大小。我希望我們稍後再實現它。 – loislo

+0

感謝您的更新 - 看起來我不能再獎勵賞金,但擁有+1! – UpTheCreek

-1

您仍然可以在配置文件選項卡下拍攝快照,然後單擊拍攝快照,爲您提供深入的內存使用情況統計。

+0

shapshots只是給你一個堆的視圖。正如問題所述,問題在於分析Chrome任務管理器中顯示的內存使用情況,但不會顯示在堆中。 – UpTheCreek