本发明涉及计算机三维建模,尤其涉及一种三维几何建模场景下的内存管理方法、设备及存储介质。
背景技术:
1、三维几何建模引擎中的内存管理技术是一个复杂而关键的部分,它确保了数据的高效处理和应用程序的稳定运行,对于保证引擎在处理复杂场景和大量数据时的高效运行至关重要。三维几何建模过程往往需要占用大量的内存,内存管理系统需要进行内存压缩或缓存等等性能优化技术来减少内存的占用。由于三维几何建模过程中往往涉及到大量对象,如点、边、面等的创建与销毁,内存管理系统需要高效的完成对这些内存的分配与释放。传统的几何建模引擎或因为使用不具备自动垃圾回收的编程语言(如c++)开发的建模引擎,或为了追求更快的内存分配与回收速度,均不提供自动垃圾回收功能,导致内存管理系统开销大,分配与回收的效率低。
技术实现思路
1、本发明提供一种三维几何建模场景下的内存管理方法、设备及存储介质,用以解决传统几何建模引擎不提供自动垃圾回收功能,导致内存管理系统开销大,分配与回收的效率低的缺陷。
2、本发明提供一种三维几何建模场景下的内存管理方法,包括:
3、初始化多个自由链表,所述多个自由链表的内存槽大小不同;
4、为每个自由链表创建一个描述符结构,所述描述符结构用于存储对应自由链表的描述信息;
5、创建三维几何建模对象时,根据对象占用内存大小与所述自由链表的描述信息进行比对,获取与对象占用内存大小匹配的自由链表作为分配链表;将所述分配链表中的空闲内存槽对应内存返回,分配完成后根据所述分配链表中空闲内存槽数目调整所述分配链表的描述信息;
6、销毁三维几何建模对象时,定位释放链表及对应释放内存槽,将所述释放内存槽标记为空闲,回收完成后根据所述释放链表中内存槽空闲数目调整所述释放链表的描述信息。
7、根据本发明提供的三维几何建模场景下的内存管理方法,还包括:
8、获取每个自由链表中内存槽使用比例;
9、根据所述内存槽使用比例将对应自由链表分为开部分和闭部分,所述开部分用于存储空闲内存节点;所述闭部分用于存储已分配内存节点;所述开部分中的空闲内存节点对应的内存回收策略包括保留策略和及时释放策略。
10、根据本发明提供的三维几何建模场景下的内存管理方法,所述自由链表的每个节点为一个预设大小的内存块,每个内存块分割为固定大小的内存槽,每个内存槽的前预设字节写入下一空闲内存槽的地址,创建三维几何建模对象时,还包括:
11、判断与对象占用内存大小匹配的分配链表中是否存在空闲内存块,若存在空闲内存块,分配对应空闲内存槽,更新所述描述符结构中的描述信息,将所述描述符结构地址写入所述空闲内存槽的前预设字节;
12、若与对象占用内存大小匹配的分配链表中不存在空闲内存块,将已满内存块移动至所述分配链表的闭部分,并向操作系统申请一个新的内存块。
13、根据本发明提供的三维几何建模场景下的内存管理方法,所述自由链表的描述信息包括申请与释放的类型、申请与释放文件名及行数信息,所述方法还包括:
14、在开启审计模式后,将所述申请与释放的类型、申请与释放文件名及行数信息输出到审计日志中。
15、根据本发明提供的三维几何建模场景下的内存管理方法,所述开启审计模式后,所述方法还包括:
16、每次申请内存时记录内存标识信息;
17、销毁三维几何建模对象时,查找待释放内存在内存申请时所记录的内存标识信息;
18、检测查找到的内存标识信息与内存申请时记录的内存标识信息是否匹配;
19、若不匹配,输出泄漏的内存分配信息。
20、根据本发明提供的三维几何建模场景下的内存管理方法,所述内存标识信息为键值对,所述输出泄漏的内存分配信息,包括:
21、创建三维几何建模对象时,通过一个字典记录申请内存的键值对;
22、销毁三维几何建模对象时,检测所述字典中是否存在待释放内存值对应的键,若存在将所述键值对从所述字典中删除;
23、在申请内存的程序运行结束后,将所述字典中剩余的键值对作为产生内存泄漏的内存分配信息。
24、根据本发明提供的三维几何建模场景下的内存管理方法,所述创建三维几何建模对象时,还包括:
25、若对象占用内存大小大于自由链表中最大的内存槽大小,则直接向操作系统申请内存,申请的内存大小包括标识字节,所述标识字节用于写入魔法数字,所述魔法数字用于表征对应内存为直接向操作系统申请的内存。
26、根据本发明提供的三维几何建模场景下的内存管理方法,所述销毁三维几何建模对象时,还包括:
27、读取待释放内存的标识字节中的数据,若所述数据包括魔法数字,则将所述待释放内存返还给操作系统;
28、若所述数据不包括魔法数字,更新所述内存槽地址的前预设字节为下一个空闲内存槽的编号,更新描述符结构中内存槽的位置与空闲内存槽数量信息;
29、若所述内存块处于所述自由链表的闭部分,且所述空闲内存槽占比大于预设比例,则将所述内存块移动到所述自由链表的开部分。
30、本发明还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一项所述的三维几何建模场景下的内存管理方法。
31、本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的三维几何建模场景下的内存管理方法。
32、本发明提供的三维几何建模场景下的内存管理方法、设备及存储介质,通过初始化多个自由链表,所述多个自由链表的内存槽大小不同;为每个自由链表创建一个描述符结构,所述描述符结构用于存储对应自由链表的描述信息;创建三维几何建模对象时,根据对象占用内存大小与所述自由链表的描述信息进行比对,获取与对象占用内存大小匹配的自由链表作为分配链表;将所述分配链表中的空闲内存槽对应内存返回,分配完成后根据所述分配链表中空闲内存槽数目调整所述分配链表的描述信息;销毁三维几何建模对象时,定位释放链表及对应释放内存槽,将所述释放内存槽标记为空闲,回收完成后根据所述释放链表中内存槽空闲数目调整所述释放链表的描述信息,当程序需要申请内存时,会由自由链表进行内存分配,而无需每次向操作系统申请,通过少量的额外内存开销,实现对于内存的高效分配与释放,并将其运用在三维几何建模引擎之中,实现了对于三维几何建模过程中申请与释放内存的高效管理。
1.一种三维几何建模场景下的内存管理方法,其特征在于,包括:
2.根据权利要求1所述的三维几何建模场景下的内存管理方法,其特征在于,还包括:
3.根据权利要求2所述的三维几何建模场景下的内存管理方法,其特征在于,所述自由链表的每个节点为一个预设大小的内存块,每个内存块分割为固定大小的内存槽,每个内存槽的前预设字节写入下一空闲内存槽的地址,创建三维几何建模对象时,还包括:
4.根据权利要求1所述的三维几何建模场景下的内存管理方法,其特征在于,所述自由链表的描述信息包括申请与释放的类型、申请与释放文件名及行数信息,所述方法还包括:
5.根据权利要求4所述的三维几何建模场景下的内存管理方法,其特征在于,所述开启审计模式后,所述方法还包括:
6.根据权利要求5所述的三维几何建模场景下的内存管理方法,其特征在于,所述内存标识信息为键值对,所述输出泄漏的内存分配信息,包括:
7.根据权利要求1所述的三维几何建模场景下的内存管理方法,其特征在于,所述创建三维几何建模对象时,还包括:
8.根据权利要求7所述的三维几何建模场景下的内存管理方法,其特征在于,所述销毁三维几何建模对象时,还包括:
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述的三维几何建模场景下的内存管理方法。
10.一种非暂态可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述的三维几何建模场景下的内存管理方法。