如何查看垃圾收集的内容?

时间:2013-04-25 14:51:41

标签: c# mono garbage-collection unity3d

有没有办法查看被盗的内容?

基本上我能够看到,当我有一个GC峰值时,确定已收集了1200个这类和类型的物体,所以也许我可以识别&重构,以避免首先打扮。

这是Unity(Mono环境),因此我无法使用任何重型工具,如Ants Memory Profiler,甚至是Mono HeapShot,因为我无法控制可执行文件的启动方式。

我已经阅读了有关GC通知的内容,但它们似乎并未包含在Mono Unity正在使用的版本中,无论如何我认为它不会给我提供详细程度我想(是吗?)。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

现在,不,您无法获取当前正在收集的内容。最重要的是,即使你可以,也已经太晚了,因为GC只适用于处理过的物体。毕竟,GC处理的对象不再被引用了。

你不应该有“GC Spike”,因为GC通常足够智能,不会阻塞集合上的所有东西。最重要的是,GC很少“马上”收集,除非告诉。

如果由于某种原因你可以证明GC确实是一个性能问题,你可以创建一种预收集器,你可以存储你确定要去的项目,它会以较慢的速度释放它们的参考会手动调用GC。