在处理大型关卡的时候经常碰到几种报错如下:
致命错误:[File:D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\GenericPlatform\GenericPlatformMemory.cpp] [Line: 253] Ran out of memory allocate 8294352 (7.9 MiB) bytes withalignment 4.最后一个错误消息:页面文件太小,无法操作完成。
致命错误:[文件:D:\build\++UE5\Sync\Engine\Source\Runtime\D3D12RHI\Private\D3D12Util.cpp] [行: 926] 尝试分配渲染资源时,显存不足
解决方法:
扩大虚拟内存到min32g-max64g,问题得到了缓解
问题电脑配置:
处理器 13th Gen Intel(R) Core(TM) i9-13900K 3.00 GHz
机带 RAM 64.0 GB (63.7 GB 可用)
存储 954 GB SSD Samsung SSD 990 PRO 1TB, 954 GB SSD PC SN740 NVMe WD 1TB
显卡 NVIDIA GeForce RTX 4090 D (24 GB), Intel(R) UHD Graphics 770 (128 MB)
思考:
问题困扰了小半个月,原因是在查找、复现问题时,任务管理器显示内存、显存并没有用很多,然后看到报错就很疑惑怎么能虚拟内存、和显存不够用,这不科学,然后尝试去自定义虚拟内存大小4g-8g、8g-16g、16g-32g,后来就没继续下去,问题一直拖着。
直到今天,需要大关卡迁移,问题不能再拖了,一狠心直接扩容到c盘容量极限32g-128g,问题解决了。后来经过实验32-64,比较稳定的最小数值。
但是很有可能是相对于我操作的大关卡而言,如果是更巨大的关卡,可能还需要更大的虚拟内存。
虚幻关卡如果出现了很多很大的单体文件,可能就需要很大的虚拟内存来保证使用时不崩溃。
还是要相信报错和日志,不能凭直觉(虚拟内存干太大有点害怕),虚拟内存不够就一直加,相信科学。