这里有点不寻常的设置,
我试过连接传统的内存分析器,如 ANTS 和 dotMemory,但它们没有连接——我确信这与没有发布版本或它是一个 Unity 应用程序有关。
我试过附加 Unity 调试器,但它无法识别游戏。
我的选项用完了,有谁知道是否可以要求 GC 转储当前正在跟踪的对象?也许可以使用 Harmony 挂钩到 GC 中的实际内存分配步骤,我可以手动跟踪?
Unity 有多个后端。它有一个是 C# 的 Mono,还有一个是 C++ 的 IL2CPP。还发布基于 Unity 的构建,afaiu,无法分析.
既然我们在谈论模组,也许做一些测试看看它是你的模组,还是其他加载的模组,或者它是否发生在你加载多个或特定的模组时,甚至是它们自己加载的模组等等。
如果您下载与游戏制作相同的 Unity 版本(您可以在 UnityPlayer.dll 的属性页面中查看它是什么),您可以将 UnityPlayer.dll 从开发版本交换到游戏中,然后使用 Unity 的内存分析工具。也就是说,这只有在游戏使用相对较新版本的 Unity(最近 3-5 年内制作)时才有效。