Unity提供Profiler的API可以用在脚本里,runtime检测一些基础数据。
比如下面几个API:
Profiler.GetTotalAllocatedMemoryLong
Profiler.GetTotalReservedMemoryLong
Profiler.GetTotalUnusedReservedMemoryLong
他们分别对应的是memory profiler里的
All Of Memory > Native > Allocated columns (除去reserved的部分)
All Of Memory > Native > Allocated 全部
以及 All Of Memory > Native > Reserved > Allocated 部分
也就是说这三者的关系是
Profiler.GetTotalAllocatedMemoryLong() + Profiler.GetTotalUnusedReservedMemoryLong() == Profiler.GetTotalReservedMemoryLong()
// true
C#还有一个https://docs.unity3d.com/ScriptReference/Profiling.Profiler.GetTotalAllocatedMemoryLong.html的API可以检查某一个特定物体消耗的内存,但是这个API的内容包含了GPU estimate,也就是估算,并不一定是准确的,具体这个API计算的内容显示在Memory Profiler的各个Object相关具体界面的Runtime estimation部分。

文章评论