我有一個Web應用程序,它在某處存在內存泄漏,我無法檢測到它。我已經嘗試了通常效果很好的Chrome開發人員工具,但是我無法追查那些有責任的代碼行。 Chrome工具只是給了我太多的信息,我無法將內存中的對象與我的代碼聯繫起來。查找JavaScript內存泄漏的工具
還有其他工具可能有幫助嗎?
我有一個Web應用程序,它在某處存在內存泄漏,我無法檢測到它。我已經嘗試了通常效果很好的Chrome開發人員工具,但是我無法追查那些有責任的代碼行。 Chrome工具只是給了我太多的信息,我無法將內存中的對象與我的代碼聯繫起來。查找JavaScript內存泄漏的工具
還有其他工具可能有幫助嗎?
更新: 允許使用記錄堆分配配置文件類型。
見截屏Javascript Memory Leak detection (Chrome DevTools)
的名單: 您可以使用下一個場景的細化內存泄漏。
之後,您w生病看到對象是一組泄漏的對象。 您可以選擇一個對象,然後查看Object的保留樹中的保持器列表
你如何追溯到你的代碼保留? – thecountofzero 2013-04-12 03:13:23
通常你只是知道誰將泄漏的對象添加到容器中,因爲它是你的代碼。但是,如果你不知道這一點,那麼你可以用泄漏的對象類的新構造函數覆蓋構造函數,該類會記錄堆棧跟蹤,並從控制檯調用原始的構造函數。重複這些步驟並查看分配堆棧跟蹤的對象。它可以給你一個線索,泄漏對象的來源是什麼,以及哪個代碼應該刪除對泄露對象的最後崇拜。 – loislo 2013-04-14 08:02:07
使用Detached DOM tree視圖中元素的innerHTML和outerHTML值來將內存中的對象映射到您的代碼並追蹤內存泄漏。
jQuery的AJAX請求是在我的應用程序中最大的罪魁禍首。找到所有的ajax jQuery函數:.ajax(),.get(),.post()和內容制定者:.html(),.text()。轉到開發工具中的網絡選項卡,刷新當前頁面10到20次。我解決了最近jQuery.load()在我的單頁JS應用程序內存泄漏... 'if(!jQuery.terms_html) \t \t \t $('#tc_container')。load(STATIC_DOMAIN +)/ terms。 HTML」,函數(){ \t \t \t \t jQuery.terms_html = $( '#tc_container')。HTML() \t \t \t}) \t \t其他 \t \t \t $( '#tc_container')。HTML (jQuery.terms_html)' – 2018-02-21 07:57:54
jQuery ajax請求是我應用程序中最大的罪魁禍首。找到所有的ajax jQuery函數:.ajax(),.get(),.post()和內容制定者:.html(),.text()。
轉到開發工具中的網絡選項卡,刷新當前頁面10到20次。如果您看到堆疊太頻繁,或者調用沒有完成,則會發生內存泄漏。
這是我能用jQuery.load()解決的最近的內存泄漏...
if(!jQuery.terms_html) $('#tc_container').load(STATIC_DOMAIN + '/terms.html', function() { jQuery.terms_html = $('#tc_container').html() }) else $('#tc_container').html(jQuery.terms_html)
另外,jQuery的在寫這個的時候最新版本是3.3.1 。如果可能,安裝最新版本是最好的入門方式。 https://github.com/jquery/jquery/releases
[用於在JavaScript調試內存泄漏工具]的可能重複(http://stackoverflow.com/questions/3573252/tools-for-debugging-memory-leaks-in-javascript) – 2012-08-15 12:14:17