我有一个网络应用程序,存在内存泄漏问题,但无法检测到原因。我已经尝试使用通常非常好用的Chrome开发者工具,但是我无法追踪导致内存泄漏的代码行。Chrome工具给了我太多信息,我无法将内存中的对象与我的代码关联起来。
是否有其他工具可能会有帮助?
我有一个网络应用程序,存在内存泄漏问题,但无法检测到原因。我已经尝试使用通常非常好用的Chrome开发者工具,但是我无法追踪导致内存泄漏的代码行。Chrome工具给了我太多信息,我无法将内存中的对象与我的代码关联起来。
是否有其他工具可能会有帮助?
更新: 使用记录堆分配的性能剖析类型。
请参见录屏视频,JavaScript内存泄漏检测(Chrome DevTools)
过去: 您可以使用以下场景来查找内存泄漏。
完成后,您将看到一组泄漏对象。 您可以选择一个对象并查看其保留树中的保留者列表。
在Detached DOM tree视图和Heap Profiler中使用元素的innerHTML和outerHTML值来将内存中的对象映射到您的代码,并跟踪内存泄漏。
在我的应用程序中,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