论文部分内容阅读
近年来,伴随着中国的产业升级,三维引擎的仿真功能在工业界的重要性愈加提升。在包括三维引擎在内的各种大型程序中,生命周期与资源管理一直是业界的一个难题。 针对三维引擎程序中对象析构的问题,本文面向三维引擎中对象的资源释放,本文通过分析现有各种GC算法,配合项目组三维引擎的开发环境,提出并实现了一套框架,辅助程序员针对具有复杂引用关系的对象,完成对象持有资源的回收。工程由标准C++17实现,以头文件库的形式提供非侵入式的接口,辅助三维引擎程序中具有复杂声明周期的对象释放内存并执行析构动作,比如脚本解释器中的对象回收器,以及业务逻辑中存在复杂引用关系的对象。整个工程由包括内存分配器、托管指针赋值器、回收器、指针包装器在内的各个模块组成。课题为具有不同需求的开发者提供了两套接口:基于指针的上层接口和基于内存分配器包装器的底层接口。在三维引擎的开发和使用中,使用本工程提供的接口构造托管,配合对象本身的析构函数,开发者可以不修改现有类的前提下,完成循环引用对象的回收,以及析构动作的执行。程序运行结果表明,在引入了一定程度开销的环境下,本工程能够有效实现针对循环引用对象的释放动作。