4

有什么方法可以查看被垃圾内容的内容吗?

基本上我能够看到,当我有一个 GC 峰值时,已经收集了 1200 个这样和这样类型的对象,所以也许我可以识别和重构以避免首先出现垃圾。

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

我已经阅读了有关 GC 通知的信息,但它们似乎没有包含在 Mono Unity 正在使用的版本中,而且无论如何我认为它不会给我想要的详细程度(会吗?)。

有任何想法吗?

4

1 回答 1

0

现在,不,您无法获取当前正在收集的内容。最重要的是,即使可以,也为时已晚,因为 GC 仅适用于已处置的对象。毕竟,GC 对不再引用的对象起作用。

您不应该有“GC Spike”,因为 GC 通常足够智能,不会成为集合中所有内容的瓶颈。最重要的是,除非被告知,否则 GC 很少“立即”收集。

如果由于某种原因您可以证明 GC 确实是一个性能问题,您可以创建一种预收集器,您可以在其中存储您确定要消失的项目,它会以较慢的速度释放它们的引用并调用手动对它们进行 GC。

于 2013-04-25T16:29:38.073 回答