包含此页的版本:
不含此页的版本:
这些示例使用了 Unity 在您关闭播放器或 Unity 编辑器时写入日志的内存使用情况报告。要创建这些报告,请使用-log-memory-performance-stats命令行参数。要查找项目的日志文件,请按照日志文件页面上的说明进行作。
动态堆分配器的使用情况报告示例如下所示:
[ALLOC_DEFAULT_MAIN]
Peak usage frame count: [16.0 MB-32.0 MB]: 497 frames, [32.0 MB-64.0 MB]: 1 frames
Requested Block Size 16.0 MB
Peak Block count 2
Peak Allocated memory 54.2 MB
Peak Large allocation bytes 40.2 MB
在此示例中,两级隔离拟合 (TLSF) 块大小为 16 MB,Unity 已分配两个块。分配器的峰值使用量为 54.2 MB。在这 52.4 MB 中,40.2 MB 没有在 TLSF 块中分配,而是回退到虚拟内存中。大多数帧分配了 16 到 32 MB 的内存,而一个帧(可能是加载帧)的内存峰值为 32 到 64 MB。
如果增加块大小,则大分配将保留在动态堆中,而不是回退到虚拟内存中。但是,该块大小可能会导致内存浪费,因为这些块可能没有被充分利用。
类型树和文件缓存分配器使用动态堆分配。要保存它们在此算法下可能使用的内存块,您可以将类型树块大小和文件缓存块大小设置为 0。使用类型树和缓存的分配将回退到主分配器。
但是,将块大小减小到 0 存在增加本机内存碎片的风险。有关如何设置这些块大小,请参阅自定义分配器。