包含此页的版本:
不含此页的版本:
这些示例使用了 Unity 在您关闭播放器或 Unity 编辑器时写入日志的内存使用情况报告。要创建这些报告,请使用-log-memory-performance-stats命令行参数。要查找项目的日志文件,请按照日志文件页面上的说明进行作。
如果线程的堆栈分配器已满,则分配将回退到线程安全线性分配器。一些溢出分配是可以的:在一个帧中 1 到 10 个,或者在加载期间几百个。但是,如果数字每帧都在增长,则可以增加块大小。
要增加块大小,请在编辑器中设置值,或使用命令行参数。有关更多信息,请参阅自定义本机内存分配器。
使用情况报告中的信息可以帮助您选择适合应用程序的块大小。例如,在以下主线程使用情况报告中,负载峰值为 2.7 MB,但其余帧低于 64 KB。您可以将块大小从 4 MB 减少到 64 KB,并允许加载帧溢出到分配上:
[ALLOC_TEMP_TLS] TLS Allocator
StackAllocators :
[ALLOC_TEMP_MAIN]
Peak usage frame count: [16.0 KB-32.0 KB]: 802 frames, [32.0 KB-64.0 KB]: 424 frames, [2.0 MB-4.0 MB]: 1 frames
Initial Block Size 4.0 MB
Current Block Size 4.0 MB
Peak Allocated Bytes 2.7 MB
Overflow Count 0
[ALLOC_TEMP_Job.Worker 18]
在以下示例中,工作线程不用于大型临时分配。为了节省内存,您可以将工作程序的块大小减小到 32 KB。这在多核计算机上很有用,其中每个工作线程都有自己的堆栈:
[ALLOC_TEMP_Job.Worker 14]
Initial Block Size 256.0 KB
Current Block Size 256.0 KB
Peak Allocated Bytes 18.6 KB
Overflow Count 0