2013-03-24 22 views
0

是否可以在JavaScript中計算創建的對象和變量?計算所有使用的對象和變量

我使用Google Chrome來分析我的網絡應用。但要調試並找到導致「內存泄漏」的對象並不那麼容易(至少對我而言)。所以我想知道在當前頁面上創建的所有對象和變量,以便我知道它們是否被刪除。

+0

請張貼一些代碼;我們不能幫助你,如果我們不知道你在做什麼! – Mooseman 2013-03-24 22:46:25

+1

我真的不認爲這是可能的。 – 2013-03-24 22:47:22

+0

要做的事情是識別導致整體內存使用增加的頁面行爲/活動。 – Pointy 2013-03-24 22:48:18

回答

3

不,您不能在Chrome(或任何其他主要瀏覽器)中執行此操作。你可以使用Chrome的「內存」頁面(鉻://內存/)獲得一些的想法是怎麼回事,但它不是對象級別,並且重要的是要明白垃圾回收不是發生同步或立即。瀏覽器/ JavaScript引擎可能會分配內存,將其用於某些JavaScript對象,然後再正確理解這些對象不再使用,但保留內存以方便將來使用。

相反,你可以做的是研究JavaScript如何工作的細節,它告訴你什麼將(通常)保存在內存中,以及爲什麼。瞭解how closures work(披露:這是我的貧血小博客上的一篇文章),並且瞭解IE如何不處理DOM元素和JavaScript對象之間的循環引用(具體來說,當沒有任何內容引用時,它不會很好地清理它們他們了,否則通常不是問題)。一般來說,除非你有特定的問題需要解決,否則不要太擔心。 (這絕對會發生,但並不像人們有時想象的那麼多。)

+1

+1剛剛學到了新東西。 – 2013-03-24 22:51:10

+0

我剛剛在Google Chrome的Timeline-Plugin中看到:當我開始錄製頁面時,它從20MB開始 - 40MB,然後我切換到其他頁面,其中的MB爲20MB - 47MB,我切換回來,它從47 MB​​跳轉到63 MB。這是正常的嗎? I.E.我按F5時應該清潔內存嗎? – 2013-03-24 22:59:29

+0

或者一個簡短的問題:當我們刷新頁面(F5)時會發生什麼?內存是否重置? – 2013-03-24 23:01:15