包含此页的版本:
不含此页的版本:
这些示例使用了 Unity 在您关闭播放器或 Unity 编辑器时写入日志的内存使用情况报告。要创建这些报告,请使用-log-memory-performance-stats命令行参数。要查找项目的日志文件,请按照日志文件页面上的说明进行作。
此分配器分配内存块,然后在这些块内线性分配内存。Unity 将可用块保存在池中。当一个块已满时,分配器从池中获取一个新块。当分配器不再需要块中的内存时,它会清除该块,并且该块将返回到可用块的池中。
您可以自定义块大小。分配器根据需要最多分配 64 个块。
如果所有块都在使用中,或者分配对于块来说太大,则分配将回退到主堆分配器,这比作业分配器慢得多。一些溢出分配是可以的:一帧中 1 到 10 个,或者几百个,尤其是在加载期间。如果溢出计数随着每一帧的增长而增加,您可以增加块大小以避免回退分配。但是,如果将块大小增加太多(例如,为了匹配场景加载等事件中的峰值使用),则可能会在播放过程中留下大量内存不可用。
例如:
[ALLOC_TEMP_JOB_4_FRAMES (JobTemp)]
Initial Block Size 0.5 MB
Used Block Count 64
Overflow Count (too large) 0
Overflow Count (full) 50408
在此示例使用情况报告中,0.5 MB 的块大小太小,无法容纳应用程序所需的作业内存,并且完整分配器导致许多分配溢出。
要检查构建的帧溢出是否足够,请运行一小段时间,然后运行更长的时间。如果溢出计数保持稳定,则溢出是加载期间发生的高水位线。如果溢出计数随着运行时间的延长而增加,则生成正在处理每帧溢出。在这两种情况下,都可以增加块大小以减少溢出,但在负载期间溢出的重要性低于每格。