我有一个正在调试的大型应用程序。我注意到锯齿状内存模式,表明频繁进行 GC。
为了对此进行调试,我试图找到正在被 GC 处理的内存内容。使用开发工具可以在 chrome 中实现吗?我知道我可以拍摄堆快照,但我如何保证这会在 GC 之前和之后立即发生?我知道我可以从代码触发堆快照,但同样的问题。
最佳答案
在 DevTools 中还没有深入了解垃圾回收。我有 requested this feature虽然前段时间。您可以“加注星标”表示您也想拥有它。
至于快照,您将无法将它们用于您的目的。在制作每个快照之前,收集所有垃圾。
Are "dead" (unreachable) objects included in snapshots?
No. Only reachable objects are included in snapshots. Also, taking a snapshot always starts with doing a GC.
最好的方法是记录堆分配(“配置文件”>“记录堆分配”)并使用内存快照来了解应用正在创建哪些对象。有了这些知识,您就可以尝试识别短暂存在的对象(导致锯齿模式)。
顺便说一句,如果你正在使用requestAnimationFrame
,你应该知道它是causing saw tooth pattern自己。
关于javascript - 我可以从开发工具中获取 GC 的内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27621798/