问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Unity IL2CPP运行时内存优化指南

创作时间:
作者:
@小白创作中心

Unity IL2CPP运行时内存优化指南

引用
1
来源
1.
https://docs.unity.cn/cn/tuanjiemanual/Manual/il2cppruntimememory.html

IL2CPP运行时是Unity引擎中负责执行脚本代码的虚拟机,它在运行过程中会消耗一定的内存资源,主要用于存储脚本运行时的元数据。这些元数据包括函数、接口、事件、属性等信息,其大小与工程的代码量呈正相关,通常可以通过global-metadata.dat文件的大小来直观反映。

以一个14MB大小的global-metadata.dat文件为例,IL2CPP运行时在游戏运行期间可能占用高达64MB的内存。通过优化,我们可以将内存占用减少到33MB。

在之前的实现中,IL2CPP在使用到某个类型时,会初始化这个类型完整的元数据,包括它的所有函数、接口、事件、属性、虚函数表等,并且一旦加载后就不会再释放。然而,通过深入分析发现,脚本代码实际运行时,通常只会用到很少的一部分元数据(反射、或者虚函数调用时访问)。例如,一个数组类型可能包含155个方法和25个虚函数,实现了6个接口,但实际运行时可能只会用到其中一小部分,导致大量内存被冗余加载。

因此,可以采用延迟加载策略。这意味着只有当游戏真正需要某个元数据项时,才会初始化和加载该数据。这种方法可以显著减少IL2CPP运行时的内存占用。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号