基于垃圾回收的三维引擎内存管理系统①
2018-04-21栾添,赵奎
计算机系统应用 2018年3期
栾 添, 赵 奎
1(中国科学院大学,北京 100049)
2(中国科学院 沈阳计算技术研究所,沈阳 110168)
当前,三维引擎被广泛地应用在各个重要行业中.为了满足三维引擎的性能要求,开发语言一般为C++.作为非托管语言,C++中内存的释放需要由程序员介入. 三维引擎的对象引用关系非常复杂,基于引用计数智能指针无法处理强循环引用的对象,目前业界尚没有一个通用的、与标准库兼容的解决方案.
现存的解决方案存在一些问题,比如虚幻引擎通过重新实现C++运行库的方法来支持垃圾回收,不兼容标准C++; 而类似Unity逻辑脚本化的方式又存在与C++跨语言交互困难和脚本语言本身的运行效率低下等问题.
本设计针对目前三维引擎回收复杂对象的困难,使用标准C++,引入了垃圾回收算法辅助程序员释放循环引用的资源. 本系统在程序员无需修改现有代码和开发环境的情况下实现了循环引用对象的回收、空间不足自动回收内存、自动调用回收对象析构函数等功能.
1 技术概述
1.1 传统三维引擎的内存管理
三维引擎由众多模块构成. 内存管理系统作为三维引擎的支持系统,管理内存的分配/释放. 如图,传统三维引擎的内存管理大致分为两个部分: 面向性能的底层和回收内存的上层[1]. 底层对开发者透明,旨在优化程序性能. 功能包括防止内存碎片化、加速内存分配速度等. 上层部分的功能是在合适的时机回收内存,回收动作的执行和引擎运行时逻辑有关.

图……
登录APP查看全文
