Javascript 为什么在Chrome中没有连接到垃圾收集根目录的项目是堆快照的一部分?

Javascript 为什么在Chrome中没有连接到垃圾收集根目录的项目是堆快照的一部分?,javascript,google-chrome,garbage-collection,google-chrome-devtools,v8,Javascript,Google Chrome,Garbage Collection,Google Chrome Devtools,V8,此堆快照输出是在单击“时间线”选项卡上的垃圾桶强制垃圾收集后获取的 在左侧面板上,我看到堆快照总计203MB 当我在summary视图中时,我可以看到203MB被当前对象的各种构造函数分解。我注意到列表中保留大小最大的几个项与任何垃圾收集根没有距离(只显示了一个“–”) 当我切换到containment视图时,我看到其中列出的项目的保留大小总计只有几MB 如果我在拍摄堆快照之前强制进行垃圾收集,那么所有与垃圾收集根没有连接的对象不应该不再是堆的一部分吗?距离是从窗口对象而不是GC根计算的。

此堆快照输出是在单击“时间线”选项卡上的垃圾桶强制垃圾收集后获取的

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

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

当我切换到containment视图时,我看到其中列出的项目的保留大小总计只有几MB


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

距离是从窗口对象而不是GC根计算的。 因此,破折号意味着没有一条固定路径穿过窗户

很难说什么是从截图中保留对象。尝试选择您关心的对象,并在底部视图中检查其保留路径

通常,由于登录到保留引用的控制台,对象被保留在堆中。可能还有其他情况