在Firefox中(我猜自Firefox 4以来)我们有about:memory
页面。即使我非常熟悉C / C ++动态内存管理,我也不得不承认我真的不知道如何阅读该页面。
我希望about:memory
能够作为JavaScript /前端开发人员,在ECMAScript和/或DOM脚本中创建检测/查找内存泄漏的更好方法。我正在测试Windows 7和Mac OS X Snow Leopard系统。
所以我有几个问题,希望有人可以回答这些问题(如果你不确定,请不要猜测。)
win32/privatebytes
和Memory in use
之间存在差异。这真让我烦恼。如果我正在做一些重的ECMAScript / DOM操作,那么前一个值似乎会增加到无止境,相反Memory in use
保持“小”。
哪个值真有意思?看起来win32 privatebytes
与您在任务管理器中看到的值相同。
Memory mapped
和Memory in use
之间的区别是什么?我在谷歌上搜索了一段时间。有人说这表明使用的内存有多少是碎片化的。这有什么意思?这是内存泄漏的直接指标吗?
如果有人能够解释大部分价值(或链接我找不到的资源),我会很高兴。但是,对我来说最有趣的是那些win32私有字节和浏览器内存使用之间的巨大差距。 Max OS X似乎没有这些值的等价物,我想这是因为基本不同的内存管理系统。
答案 0 :(得分:1)
这个mozilla博客似乎解释得很好,如果没有,那么你就会得到一个知道的人的联系方式:
http://blog.mozilla.com/nnethercote/2011/05/23/a-better-aboutmemory-stage-1-75/
答案 1 :(得分:1)
您应该只关心浏览器实际使用的内存。由于内存碎片等原因,操作系统级别总会分配更多内存。但这确实只是浏览器开发人员需要考虑的问题。如果您看到可重现的病理行为 - 提交Mozilla错误(需要最小化的测试用例)。但除此之外,您应该只确保您的代码不会囤积无法释放的对象(使用的内存可见)。
我不确定“内存映射”是否在about:memory
的新版本中可见,可能是以新名称显示。我很确定你不应该关心它。这是分配给它的地址的内存量,这在操作系统级别上只是有趣的。
答案 2 :(得分:0)
回答主题标题中的一般性问题,而不是具体问题,这些问题似乎已得到解决:
<user>@<revid>
),然后点击更改集链接(如changeset NNNNNN a6b3a22fbca7
),然后点击错误链接。