如何正确阅读Firefox“about:memory”?

时间:2011-08-22 10:27:45

标签: javascript firefox memory memory-leaks

在Firefox中(我猜自Firefox 4以来)我们有about:memory页面。即使我非常熟悉C / C ++动态内存管理,我也不得不承认我真的不知道如何阅读该页面。

我希望about:memory能够作为JavaScript /前端开发人员,在ECMAScript和/或DOM脚本中创建检测/查找内存泄漏的更好方法。我正在测试Windows 7和Mac OS X Snow Leopard系统。

所以我有几个问题,希望有人可以回答这些问题(如果你不确定,请不要猜测。)

  • Windows 7在win32/privatebytesMemory in use之间存在差异。

这真让我烦恼。如果我正在做一些重的ECMAScript / DOM操作,那么前一个值似乎会增加到无止境,相反Memory in use保持“小”。 哪个值真有意思?看起来win32 privatebytes与您在任务管理器中看到的值相同。

  • Memory mappedMemory in use之间的区别是什么?

我在谷歌上搜索了一段时间。有人说这表明使用的内存有多少是碎片化的。这有什么意思?这是内存泄漏的直接指标吗?

如果有人能够解释大部分价值(或链接我找不到的资源),我会很高兴。但是,对我来说最有趣的是那些win32私有字节和浏览器内存使用之间的巨大差距。 Max OS X似乎没有这些值的等价物,我想这是因为基本不同的内存管理系统。

3 个答案:

答案 0 :(得分:1)

这个mozilla博客似乎解释得很好,如果没有,那么你就会得到一个知道的人的联系方式:

http://blog.mozilla.com/nnethercote/2011/05/23/a-better-aboutmemory-stage-1-75/

答案 1 :(得分:1)

您应该只关心浏览器实际使用的内存。由于内存碎片等原因,操作系统级别总会分配更多内存。但这确实只是浏览器开发人员需要考虑的问题。如果您看到可重现的病理行为 - 提交Mozilla错误(需要最小化的测试用例)。但除此之外,您应该只确保您的代码不会囤积无法释放的对象(使用的内存可见)。

我不确定“内存映射”是否在about:memory的新版本中可见,可能是以新名称显示。我很确定你不应该关心它。这是分配给它的地址的内存量,这在操作系统级别上只是有趣的。

答案 2 :(得分:0)

回答主题标题中的一般性问题,而不是具体问题,这些问题似乎已得到解决:

  • 将您感兴趣的测量值悬停在其中。他们提供了一些解释工具提示。
  • 如果您对细节感兴趣,有时可以阅读该措施背后的讨论(在bugzilla中)。
    要查找讨论,请在mozilla代码中搜索度量名称,例如: http://mxr.mozilla.org/mozilla-central/search?string=heap-dirty,选择“Hg Blame”链接,点击带有度量名称的行之前的链接(看起来像<user>@<revid>),然后点击更改集链接(如changeset NNNNNN a6b3a22fbca7),然后点击错误链接。