javascript - 为什么与 Chrome 中的堆快照的垃圾收集根部分无关的项目?

标签 javascript google-chrome garbage-collection google-chrome-devtools v8

此堆快照输出是在单击“时间轴”选项卡上的垃圾桶以强制进行垃圾回收后拍摄的。

Summary View Containment View

在左侧面板上,我看到堆快照总计 203MB。

当我在摘要 View 中时,我可以看到 203MB 被存在的对象的各种构造函数分解。我注意到列表中保留大小最大的几个项目与任何垃圾收集根没有距离(只显示一个“-”)。

当我切换到包含 View 时,我看到那里列出的项目的保留大小总计只有几 MB。

如果我在获取堆快照之前强制执行垃圾收集,那么所有那些与垃圾收集根没有连接的对象难道不应该不再是堆的一部分吗?

最佳答案

距离是从 Window 对象而不是 GC 根计算的。 因此,破折号表示没有任何保留路径通过窗口。

很难从屏幕截图中说出什么是保留对象。尝试选择您关注的对象并在底部 View 中检查其保留路径。

通常对象会被保存在堆中,因为它们被登录到保留引用的控制台中。可能还有其他情况。

关于javascript - 为什么与 Chrome 中的堆快照的垃圾收集根部分无关的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27262497/

相关文章:

javascript - Angular 2 Kendo toOdataString 返回空白字符串

javascript - 只能调用一次的函数

html - 使用 CSS 将 Bootstrap 列转换为表格时获取空白

javascript - Chrome 不会在需要时重绘页面

Java HotSpot 持续时间极长的年轻 Collection

javascript - onClick 按钮的警报值

javascript - 如何在 jQuery 中的课后将课添加到 div?

javascript - 如何让 Web 组件使用 TypeScript 为 IE11/Edge/Chrome/Firefox 编译?

actionscript-3 - Actionscript 内存管理?

tomcat - GC 参数 -XX :+ExplicitGCInvokesConcurrent cause tomcat timeout