在JavaScript中跟踪内存使用情况

5

有没有一种方法在JavaScript中跟踪应用程序使用的内存?我不是想到浏览器扩展程序用于调试内存泄漏等问题,而是让应用程序跟踪自己的内存消耗,以便能够做出合格的决策是否释放内存。


好的,有Chrome的Shift+Esc可以显示每个标签页的内存使用情况(这些标签页在不同的进程中,与其他浏览器相反)。 - Sebas
@Sebas,W8任务管理器对IE10也是如此。 - Konstantin Dinev
4
JavaScript本身并没有任何机制能够了解内存相关的信息。 - epascarello
1
由于JS是一种垃圾回收语言,你几乎无法“释放”内存。同样的原因,也没有本地机制来获取这样的信息。 - Bergi
Bergi:释放内存是指删除对象、数组等,这样可以让垃圾回收器完成其余的工作。 - Dag Sondre Hansen
1
只需将程序结构化,使得不必要的数据在不再需要时超出范围即可。在GC VM中手动删除数据很可能意味着您做错了。 - Oleg V. Volkov
2个回答

0
为了能够做出是否释放内存的合格决策。
JavaScript具有自动垃圾回收器来管理内存。您无法手动释放内存,也不能调用垃圾回收器(例如在Java和C#中)。

0

虽然我同意评论者关于JS中内存管理的看法,但在ECMAScript 6中有一个有趣的功能叫做“WeakMaps”,虽然不完全是你所问的,但它是相关的:

“使用weakmaps的典型例子是创建与特定DOM元素相关的对象。例如,jQuery在内部维护了一个缓存对象,每个已被引用的DOM元素都有一个缓存对象。使用weakmap将允许jQuery在从文档中删除DOM元素时自动释放与其关联的内存。”

http://www.nczonline.net/blog/2012/11/06/ecmascript-6-collections-part-3-weakmaps/

https://developer.mozilla.org/en-US/docs/JavaScript/ECMAScript_6_support_in_Mozilla


它们是一种特殊的数据结构,简化了自动垃圾回收,但是你的答案与OP所问的无关。 - Bergi
是的,但它与此相关。OP关注内存管理-这并不是JavaScript的正确问题。但是这个功能可能会缓解问题。 - Alex KeySmith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接