We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
垃圾回收,即 garbage collect,简称 “GC”。
这里的 “手动” 指有效地、显式地、可控地触发浏览器 JavaScript 引擎的垃圾回收行为,比如通过点击页面中的按钮来调用 JS 方法,或使用浏览器提供的功能。
IE 实际上提供了一个未公开的 JS 方法 CollectGarbage()。至少在 IE8 仍然存在此方法。
CollectGarbage()
if (typeof window.CollectGarbage === 'function') { CollectGarbage() }
旧版(非 Blink 内核)的 Opera 7+ 似乎也有一个手动触发 GC 的 JS 方法。
window.opera.collect()
有文章 提到了两种方法:
Components.utils.forceGC()
window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIDOMWindowUtils) .garbageCollect()
区别在于前者只触发 JS 引擎内的垃圾回收,而后者还可以处理 XPCOM 对象的回收。对分析网页内的垃圾回收行为来说,前者足够了。
在最新的 Firefox 中,上述方法可能已失效(无法在控制台直接调用),也可能这些方法只能在 Firefox 扩展中使用。我稍后会找低版本的 Firefox 做更多测试。
更新:在 Firefox 3.6 中也无法直接使用上述方法。
更新:有一个扩展 MemChaser 似乎允许手动触发 GC。
更新:Firefox 在 about:memory 页面中原生提供了详细的内存监控功能,但结合上述扩展使用似乎更方便一些。
about:memory
Chrome 的 DevTools 对 JavaScript 的垃圾回收和内存泄漏提供了强大的分析工具。在 DevTools 的 “Timeline” 页面可以手动点击 “CollectGarbage” 按钮来触发 GC。
详情可参见这篇文章:《搞定JavaScript内存泄漏》。
在推测 JavaScript 引擎的 GC 行为时,有时只能做一些黑盒测试(比如强制浏览器进行 GC 并观察前后的内存占用对比),此时就会用到上述方法了。
The text was updated successfully, but these errors were encountered:
为啥chrome里面memory点collect garbage不能回收?多次快照内存没变化
Sorry, something went wrong.
No branches or pull requests
如何手动触发 JavaScript 垃圾回收行为?
垃圾回收,即 garbage collect,简称 “GC”。
这里的 “手动” 指有效地、显式地、可控地触发浏览器 JavaScript 引擎的垃圾回收行为,比如通过点击页面中的按钮来调用 JS 方法,或使用浏览器提供的功能。
IE
IE 实际上提供了一个未公开的 JS 方法
CollectGarbage()
。至少在 IE8 仍然存在此方法。Opera
旧版(非 Blink 内核)的 Opera 7+ 似乎也有一个手动触发 GC 的 JS 方法。
Firefox
有文章 提到了两种方法:
区别在于前者只触发 JS 引擎内的垃圾回收,而后者还可以处理 XPCOM 对象的回收。对分析网页内的垃圾回收行为来说,前者足够了。
在最新的 Firefox 中,上述方法可能已失效(无法在控制台直接调用),也可能这些方法只能在 Firefox 扩展中使用。我稍后会找低版本的 Firefox 做更多测试。
更新:在 Firefox 3.6 中也无法直接使用上述方法。
更新:有一个扩展 MemChaser 似乎允许手动触发 GC。
更新:Firefox 在
about:memory
页面中原生提供了详细的内存监控功能,但结合上述扩展使用似乎更方便一些。Chrome
Chrome 的 DevTools 对 JavaScript 的垃圾回收和内存泄漏提供了强大的分析工具。在 DevTools 的 “Timeline” 页面可以手动点击 “CollectGarbage” 按钮来触发 GC。
详情可参见这篇文章:《搞定JavaScript内存泄漏》。
小结
在推测 JavaScript 引擎的 GC 行为时,有时只能做一些黑盒测试(比如强制浏览器进行 GC 并观察前后的内存占用对比),此时就会用到上述方法了。
The text was updated successfully, but these errors were encountered: