WebKit强制完全垃圾收集/行为和调试/检测泄漏

ten*_*our 7 javascript garbage-collection webkit

我正在寻找这个Cocoa/WebKit应用程序中的内存泄漏.我正在将对象从本机传递到javascript,通过查看它们的生命周期,我注意到垃圾收集方面的不可预测的行为.

我用递增的ID标记每个对象,并跟踪已创建/释放的对象数(垃圾收集).

分配的第一个~1000个对象在使用后很快就会被释放,并且未完成对象的数量仍然很低,大约为10.一些随机对象(例如#171)似乎永远不会被释放.

在那之后,对象徘徊在周围,并且根本不会被释放.那个对象#171似乎永远不会被收集(在等待一小时观察日志之后),但其他相同处理的对象相对较快地被删除.

这些都没有证明存在内存泄漏,但它也没有证实没有内存泄漏.

所以,我有几个问题:

  • 如何在WebKit中强制执行完全垃圾收集?我想看看我是否有内存泄漏.我试过了JSGarbageCollect(globalContext),但似乎没有效果.它不释放任何对象 - 后来由GC看起来释放的对象.
  • 有没有办法判断一个对象是否有引用它?
  • WebKit的GC中是否有任何钩子,例如甚至只知道它何时运行,或获得一些见解/统计?
  • 是否有关于WebKit GC行为的行为的文档?或者有哪些调试工具?我知道它应该是一个黑盒子,但应该有一些基本的内省工具.