我有很大的垃圾收集暂停时间。在尝试修复问题之前,我希望能够确定最主要的对象。我已经查看了Chrome上的堆快照,但(如果我错了,请纠正我)似乎找不到任何被收集的指示器,只有占用内存最多的内容。是否有一种经验方法来回答这个问题,或者我仅限于根据经验进行猜测?
我有很大的垃圾收集暂停时间。在尝试修复问题之前,我希望能够确定最主要的对象。我已经查看了Chrome上的堆快照,但(如果我错了,请纠正我)似乎找不到任何被收集的指示器,只有占用内存最多的内容。是否有一种经验方法来回答这个问题,或者我仅限于根据经验进行猜测?
请查看https://developers.google.com/chrome-developer-tools/docs/heap-profiling,尤其是Containment View。
Containment View本质上是您应用程序对象结构的“鸟瞰图”。它允许您窥视函数闭包的内部,观察共同组成JavaScript对象的VM内部对象,并了解应用程序在非常低的级别上使用多少内存。
该视图提供了几个入口点:
DOMWindow对象-这些对象被认为是JavaScript代码的“全局”对象;GC根-GC收集器实际使用的GC根;Native对象-browser对象“推送”到JavaScript虚拟机中以允许自动化,例如DOM节点、CSS规则(有关更多详细信息,请参见下一节)。下面是Containment View的示例: