比较视图中Chrome DevTools堆快照大小与每个构造函数的大小增量之和之间的差异

时间:2017-04-11 13:26:26

标签: node.js google-chrome google-chrome-devtools v8

这里我在chrome dev工具中拍摄了两个堆快照并将其切换为“比较模式”,这样我就可以看到两个快照之间的增量:

unbalanced memory numbers, chrome dev tools snapshot, size delta vs snapshot size

请注意,第一个堆快照是92.3mb,第二个是275mb(如左边的“快照1”和“快照2”所示)。这是一个 182.7mb 的大小增加。

在最右边的列中,列出了每个构造函数的大小增量(以字节为单位)。如果我们总结这些,我们会净增加 500kb

怎么会这样?大小增量总和不应该与快照之间的大小差异相同吗?如果您查看“比较视图”部分中的chrome heap snapshots tutorial,则会有一个屏幕截图显示您的期望:更改的大小增量总和是快照大小。

注意:我实际上使用的是nodejs的--inspect选项,所以这不是常规的chrome devtools,但看起来它基本上是相同的软件(由同一个团队维护),只是略有适应nodejs,所以我通过不标记nodejs等保持一般性。

编辑1:我从评论中点击了@ wOxxOm的建议(快照前点击垃圾箱图标)并获得了60mb快照与300mb快照,但是当我点击模式下拉列表并选择“比较“为了获得增量,我收到了这条消息(您可能需要在新标签中打开图像才能阅读):

An error occurred when a call to method 'calculateSnapshotDiff' was requested

我开始认为这可能与nodejs有关,看起来这不仅仅是我对DevTools的误解,所以我会添加一些额外的细节,这可能是发生了什么的线索:

  • 我正在使用node-webworker-threads,它使用本机线程在nodejs中实现WebWorker API。
  • 我正在传递这些“worker”10mb的文本块,然后将元数据返回到主线程并进行聚合。该文本以约5mb / s的速度被泵入工人池中。
  • 当我点击@wOxxOm建议的垃圾箱图标时,我的电脑的RAM使用率似乎没有下降。
  • this page上显示“快照中只包含可访问的对象。此外,拍摄快照始终以垃圾回收开始。”可能是快照大小正在考虑考虑工作者使用的RAM,但实际构造函数表+增量只列出主线程中的“可达对象”?
  • Here's a pie graph内存使用情况。

0 个答案:

没有答案