我想调试Unity中消耗单声道内存最多的部分,因为我在profiler中看到的只是一大块写着" mono“之类的东西,而不知道它是什么。
我已经在Unity profiler中做了纹理观察,我对它没有问题。(我声明我使用它,只看到高内存的单声道块)问题是一定有某种内存泄漏而不是内存峰值,因为如果我玩游戏足够长的时间,我的银河大二人组将崩溃与黑色纹理,这是内存占用太多。如果我在分析器中看到它,它显示ManagedHeap和Mono Domain在多次玩游戏后只有很大一块内存。
发布于 2015-07-23 12:30:16
更多关于你正在开发的平台,你已经在使用的工具,以及你一开始分析内存的原因的信息都会很有帮助。如果没有这些信息,我只能建议如下……
1) Unity Memory Profiler
我建议从Unity3D编辑器附带的内存分析工具开始。您可以在此处找到有关这些工具的更多信息:http://docs.unity3d.com/Manual/ProfilerMemory.html
听起来您已经在这么做了,因为您已经从分析器中缩小了"Mono“项的范围。这很好,您现在知道是您的一个脚本消耗了内存。
确保您使用的是高级视图。Unity Profiler的高级视图将为您提供有关哪些脚本正在使用内存的更多信息。
2)纹理
当谈到Unity和memory时,我总是从纹理开始。似乎每次我对纹理进行动态加载或修改时,都会导致内存泄漏。查看您的脚本,特别是加载纹理的脚本,并尝试暂时禁用此逻辑。它对你的记忆问题有帮助吗?
3)观察和优化
如果您找不到任何可能导致问题的脚本,我会尝试观察您的游戏,并定位您看到内存峰值的位置。尝试确定此时正在运行的逻辑是什么。禁用单个脚本并再次运行场景。这是否减少了内存使用量?重复此过程,直到找到导致峰值的脚本。一旦你找到了这些脚本,你就可以尝试重构它们,直到得到你想要的结果。
https://stackoverflow.com/questions/31578009
复制相似问题