javascript - 内存泄漏的单元测试javascript

标签 javascript unit-testing memory-leaks

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

我知道您可以通过 Chrome 开发工具执行此操作,但我想知道是否有一种方法可以直接从我的单元测试中执行此操作,因为编写一些代码、获取堆快照、执行潜在的内存操作似乎很乏味泄漏操作,拍摄另一个堆快照,并为每个可能的内存泄漏操作重复,每次编写另一个代码片段。更不用说在一个地方添加代码可能会导致应用程序另一部分发生意外内存泄漏。

只是我写了一个内存泄漏很大的应用程序,我不得不从头开始。这次我开发应用程序时,我想确保我的单元测试可以检测到我刚刚造成了内存泄漏,并且我可以尽快消除它。

我想我见过这样的 C++ 工具,但没有见过 Javascript。有人知道吗?谢谢!

最佳答案

根据 MDN's docs on window.performance , Google Chrome 有一个非标准扩展 ( window.performance.memory ),可以访问 usedJSHeapSize、totalJSHeapSize、jsHeapSizeLimit 等值。

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

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

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

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

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

关于javascript - 内存泄漏的单元测试javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17777909/

相关文章:

javascript - 格式存储用户浏览器的语言

javascript - Socket.IO socket.id 无需重新连接即可为同一客户端更改

php - 为什么 symfony2 功能测试 client->request() 没有得到成功的 response()?

c++ - 如果最后一行不相等则追加

ios - 将图像加载到 UITableView 中的自定义单元格时发生内存泄漏

javascript - 通知系统如何工作

javascript - 谷歌登录 : disable autologin on page load

unit-testing - 如何在Dart中对Stream.listen()进行单元测试

memory-leaks - 与编译时ARC相比,运行时GC有何优势?

memory-leaks - Valgrind 显示内存泄漏,但没有发生内存分配