2013-01-22 47 views
3

我每5秒運行一次繁重的JavaScript,任務管理器顯示內存使用量不斷增加。但是堆快照沒有。如果我停止腳本,內存在約 半分鐘 兩分鐘後清除。任務管理器顯示內存泄漏,但堆快照沒有

UPDATE:

如果我離開這個劇本很長一段時間內,內存增加,直到瀏覽器崩潰。 我也嘗試運行chrome開發工具的時間線測試,並且它們也沒有顯示內存使用量的增加,與堆快照相同。所以我想這是某種泄漏,但我不明白什麼是泄漏。

另一件我不能確認的事情,因爲我無法安裝以前的Chrome版本,我不記得在之前的版本(<)上發生了這種情況。 IE10在不增加內存的情況下運行此測試。這可能是新Chrome的問題嗎?

+1

如果讓它運行足夠長時間,您是否看到鋸齒圖案?如果是這樣,你只能等到GC完成它的工作。 – bfavaretto

+0

這只是一個「內存泄漏」,如果它永遠不會回落:x – 2013-01-22 20:12:33

+1

我遇到了同樣的問題:在Chrome任務管理器中,我看到我的頁面內存在幾分鐘內從100MB增加到超過1,200MB。與此同時,JavaScript內存大約在13MB左右。時間軸顯示JS Heap有一個很好的鋸齒形狀,所以不知道爲什麼內存不斷增長, – Luke

回答

3

假設您指的是Chrome開發人員工具,您可能看不到堆快照中的內存增加,因爲堆快照配置程序在快照之前運行垃圾收集器。

看到增加的內存使用情況,特別是在活動處理過程中,是非常正常的。垃圾收集器不會不必要地運行。如果你的機器有內存可用,它會讓保留的內存增加。如果你開始推動可用內存的限制,收集器應該運行。你應該允許這發生,看看它是否。

由於您報告在空閒期後內存降到原來的水平,這表明沒有內存泄漏,並且垃圾收集器能夠正確收集所有已分配的堆對象。

但是,IANAGE(我不是Google的工程師)。我建議閱讀Heap Profiler documentation和相關Memory 101 page的背景。

+0

我做了更多的測試並更新了問題,我仍然認爲這是一個泄漏。 – zeroin

相關問題