有没有办法在测试中找到JavaScript内存泄漏?

时间:2015-01-14 14:39:10

标签: javascript testing memory-leaks jasmine

我刚刚完成了JavaScript应用程序的测试,我第一次使用Jasmine。一切正常,但我仍然需要测试应用程序是否有内存泄漏。甚至可以在我的规格中以编程方式检查它吗?也许还有一些额外的库?

2 个答案:

答案 0 :(得分:2)

Chrome具有window.performance API的非标准扩展 - (window.performance.memory),您可以在其中衡量内存使用情况。

为了启用精确的内存统计信息,您必须使用此标志:--enable-precise-memory-info

但您还需要强制GC判断测试后是否保留内存。因为CG不会立即发生。

使用Chromium浏览器,您可以使用特殊命令标志运行它以公开强制GC的方法:

chromium-browser --js-flags='--expose_gc'

这使您可以访问方法window.gc()

答案 1 :(得分:1)

据我所知,没有自动查找javascript内存泄漏源的方法。 Javascript内存泄漏真是令人讨厌的事情,你可以浪费很多时间。最近,我开发了一个非常大的企业Web解决方案作为单页面应用程序,具有近1mb的最小化自编代码。突然间,我们意识到我们的应用程序正在严重泄漏。我尝试了数百种技术来找到内存泄漏的来源,对我来说最简单的方法是使用google chrome profiler,获取堆快照并比较不同的堆快照。以下是更多信息:

https://developer.chrome.com/devtools/docs/javascript-memory-profiling

在您的应用中有一个很好的调试内存泄漏的一周,希望在我的情况下花费更少的时间。 :)