单元测试javascript的内存泄漏

Jac*_*rie 6 javascript unit-testing memory-leaks

有没有办法对javascript内存泄漏进行单元测试?我的意思是,有没有办法直接从javascript代码访问堆来检查分离的DOM树或增加内存使用量?

我知道你可以从Chrome Dev Tools那里做到这一点,但我想知道是否有办法直接从我的单元测试中做到这一点,因为编写一些代码,获取堆快照,执行可能的内存泄漏操作似乎很乏味,获取另一个堆快照,并在每次写入另一段代码时重复每个可能的内存泄漏操作.更不用说在一个地方添加代码可能会导致应用程序的另一部分出现意外的内存泄漏.

只是我写了一个有大量内存泄漏的应用程序,我不得不从头开始.当我这次开发应用程序时,我想确保我的单元测试可以检测到我刚刚创建了内存泄漏,我可以尽快消除它.

我想我已经看过像C++这样的工具,但不是Javascript.有谁知道吗?谢谢!

Mat*_*ley 5

根据MDN 关于 window.performance 的文档,Google Chrome 有一个非标准扩展 ( window.performance.memory ),可以访问usedJSHeapSize、totalJSHeapSize、jsHeapSizeLimit 等值。

要获得字节级精度,您需要使用该--enable-precise-memory-info标志。

对于垃圾收集,我发现强制浏览器执行 GC 的唯一方法是使用 Chromium,并使用特殊的命令标志。当您运行此命令时:

chromium-browser --js-flags='--expose_gc'
Run Code Online (Sandbox Code Playgroud)

您可以访问该方法window.gc(),您可以调用该方法来强制 GC。

例如,这可能会开启在单元测试中测试内存使用情况的可能性。


Rad*_*nik -1

要检查内存泄漏,您需要有权访问内存分配大小或变量的大小。在 JavaScript 中不可能做到这一点。