javascript - 通过页面重新加载诊断内存泄漏

标签 javascript google-chrome firefox memory-leaks

我怀疑我的单页 javascript 应用程序某处存在内存泄漏。如果页面保持打开状态,运行 Firefox 或 Chrome 的弱设备似乎最终会崩溃。我正在尝试确定重新加载页面是否会释放内存。

我知道内存处理是特定于浏览器的,因此在 Chrome 或 Firefox 中答案可能不同。

注意:我知道在这个问题中提到了很多浏览器(这可能是题外话),但这个问题的重点是关于 javascript 调试,我认为这是非常切题的。

最佳答案

除了浏览器/扩展错误,浏览器会在不再需要时释放资源; Firefox 清除 compartments , Chrome 杀 processes和相关存储。

Firefox 会尽力而为,但可能需要一些时间来清除内存并可能创建 zombie compartments偶尔:

Compartments are destroyed when they are garbage collected. This happens some time after the last reference to them disappears. This means there can be a delay between a page being closed and its compartments disappearing...

Sometimes, due to bugs in Firefox, the Add-on SDK and/or add-ons, compartments are created that are never destroyed. These are a particular kind of memory leak, and they cause Firefox's memory usage to increase gradually over time, slowing it down and making it more likely to crash.

Chrome 对每个选项卡使用一个进程(实际上是对选项卡内的某些实体以及 IIRC 进行子处理,例如插件、iframe 等)以达到相同的效果。尽管对 chrome://memory-redirect/ 进行快速检查并刷新选项卡看起来使用了相同的 pid。所以刷新并不是一个完全干净的状态。

FWIW Chrome 具有清除缓存的“强制重新加载”功能,可能有助于清除更多内存或安慰剂:cmd-shift-r

我不是很熟悉内部结构,但我只看到当 particular browser 时刷新之间没有可靠释放的东西。变得太聪明了,当你不改变原点等时试图保留东西以提高加载性能。

简而言之,如果您没有看到如您预期的那样释放内存,但您想使用各种“about:memory”工具来验证这一点,那么您可能会遇到浏览器错误关于你avoid such behavior and/or report the issue to the browser's dev team .

否则,我认为您最好使用可用的各种工具解决页面中您自己的内存泄漏问题。

关于javascript - 通过页面重新加载诊断内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34952634/

相关文章:

asp.net - 谷歌浏览器无法正确渲染溢出

css - Firefox 滚动条但在 Chrome 上没有

javascript - Firefox:HTML keyUp 事件没有事件数据

javascript - O365 中的 Request_BadRequest

javascript - 数组大小如何在 Javascript 中工作

google-chrome - 如何强制 Chrome 的脚本调试器重新加载 javascript?

javascript - 通过 chrome 扩展将文件作为表单数据上传

linux - 如何确定 X Windows/Linux 中 Windows 的可见区域?

javascript - 为什么这个 Array.sort 行为在 Chrome 和 Node.js 中不同

javascript - 事件链接 CSS 不显示阴影