适用于3D模型资源的大规模展示的内存管理方法与流程

专利2022-06-30  56


本发明涉及一种适用于3d模型资源的大规模展示的内存管理方法。



背景技术:

随着房地产以及装修行业的发展,采用三维建模并在室内设计装修布局方案受到了极大的关注。在室内家具的智能自动布局技术的帮助下,设计师只需进行少量调整便可为客户生成设计方案,能够大大减少设计师的设计时间。智能高效的室内家具自动布局技术离不开高效的前端3d场景展示能力。

目前的web前端3d,可以较为流程的展示出整套设计方案,但是如果需要快速变换整体装修风格,在多套装修方案来回切换的情况下,特别是高质量模型,高质量纹理,大规模场景的快速切换,会极大增加浏览器内存管理的压力。频繁的模型、纹理等大规模的3d资源的加载和释放,会导致浏览器的卡顿,甚至浏览器因为内存分配失败导致报错,崩溃。在切换房间3d模型资源时,浏览器会卡顿的原因主要在于:内存占用刚开始较低,随着资源切换的数量增加,内存占用不断攀高,并且随着内存的释放,内存占用不稳定,时高时低,导致浏览器卡顿。

上述问题是在3d模型资源的大规模展示的内存管理过程中应当予以考虑并解决的问题。



技术实现要素:

本发明的目的是提供一种适用于3d模型资源的大规模展示的内存管理方法解决现有技术中存在的现有的内存管理方式不理想,随着3d模型资源切换的数量增加,内存占用不断攀高,并且随着内存的释放,内存占用不稳定的问题。

本发明的技术解决方案是:

一种适用于3d模型资源的大规模展示的内存管理方法,包括以下步骤,

s1、设置3d模型资源之间的互斥关系,分别形成互斥资源组;

s2、计算步骤s1所得各互斥资源组中3d模型资源所需分配的内存大小,得出该互斥资源组所需分配的内存大小;

s3、依据步骤s2中所得互斥资源组所需分配的内存大小,为各互斥资源组分配固定内存,并建立互斥资源配置表;

s4、在加载3d模型资源时,读取互斥资源配置表,将与加载的3d模型资源归属同一互斥资源组且在占用固定内存的原3d模型资源,替换为加载的3d模型资源,并更新互斥资源配置表。

在一个实施方式中,还包括步骤s5,在新增3d模型资源时,更新互斥资源配置表。

在一个实施方式中,还包括步骤s6,在删除3d模型资源时,更新互斥资源配置表。

进一步地,步骤s2中,计算各互斥资源组中3d模型资源所需分配的内存大小,得出该互斥资源组所需分配的内存大小,具体为,依据该互斥资源组中的3d模型资源所需分配的最大内存,得出该互斥资源组所需分配的内存。

在一个实施方式中,步骤s3中,将互斥资源配置表保存在用于展示3d模型的服务器中。

有益效果

该种适用于3d模型资源的大规模展示的内存管理方法,通过设置互斥资源组,能够实现同一互斥资源组的3d模型资源占用固定内存的快速替换,无需要重新释放和申请内存,保证了内存的占用非常稳定,进而保证了应用程序运行的稳定性。

附图说明

图1是本发明实施例适用于3d模型资源的大规模展示的内存管理方法的结构示意图;

具体实施方式

为了更清楚地说明本申请的实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。应当理解,给出这些示例性实施例仅是为了使相关领域的技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。

如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。

虽然本申请对根据本申请的实施例的系统中的某些系统、模块或单元做出了各种引用,然而,任何数量的不同模块可以被使用并运行在客户端和/或服务器上。所述模块仅是说明性的,并且所述系统和方法的不同方面可以使用不同模块。

同时,本申请使用了特定词语来描述本申请的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本申请至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。

适用于3d模型资源的大规模展示的内存管理方法,如图1,包括以下步骤,

s1、设置3d模型资源之间的互斥关系,分别形成互斥资源组;

s2、计算步骤s1所得各互斥资源组中3d模型资源所需分配的内存大小,得出该互斥资源组所需分配的内存大小;

步骤s2中,计算各互斥资源组中3d模型资源所需分配的内存大小,得出该互斥资源组所需分配的内存大小,具体为,依据该互斥资源组中的3d模型资源所需分配的最大内存,得出该互斥资源组所需分配的内存。

s3、依据步骤s2中所得互斥资源组所需分配的内存大小,为各互斥资源组分配固定内存,并建立互斥资源配置表;

在一个实施方式中,步骤s3中互斥资源配置表包括互斥资源组的各3d模型资源、3d模型资源的url路径和互斥资源组的所需分配固定内存的大小。

例如,a1、a2、a3这3个资源是互斥的,作为一组,他们分别占用的内存大小是s0,s1,s2。取得他们的最大值,max(si)。这个互斥资源配置表,保存每个资源的自身的信息,也包含3d模型资源的url路径,占用的内存大小。浏览器依据运行环境不同,临场分配互斥资源组的内存地址,且互斥资源组的内存大小是一定的。每组资源的总大小可能很大,由于互斥资源内资源是互斥的,所以只需要分配给他们max(si)的内存就够了。当切换资源的时候,不用重新开辟内存,只需要清空这个段内存,然后就可以加载资源了。

举例说明,如果在一个组内有20个资源,每个资源平均大小是10m,那总大小就是200m。最大的那个资源占用20m。那只需要给这个组分配20m的内存就可以了。无论组内资源怎么切换,都这20m内。利用互斥资源配置表,管理几乎所有的资源,保障了内存的平稳。不会产生内存碎片。

在一个实施方式中,可以将互斥资源配置表保存在用于展示3d模型的服务器中。客户端获取到服务器上的互斥资源配置表后,根据互斥资源配置表中信息申请内存地址,同时客户端对互斥资源配置表的内容进行更新。

s4、在加载3d模型资源时,读取互斥资源配置表,将与加载的3d模型资源归属同一互斥资源组且在占用固定内存的原3d模型资源,替换为加载的3d模型资源,并更新互斥资源配置表。

该种适用于3d模型资源的大规模展示的内存管理方法,通过设置互斥资源组,能够实现同一互斥资源组的3d模型资源占用固定内存的快速替换,无需要重新释放和申请内存,保证了内存的占用非常稳定,进而保证了应用程序运行的稳定性。

该种适用于3d模型资源的大规模展示的内存管理方法,针对室内装潢的3d展示程序的特点,进行内存管理,能够极大加强了程序的稳定性,保证了流畅地进行高质量场景的快速切换浏览。在大规模资源释放和加载的时候,能够保持内存非常稳定,保证几乎稳定不变的内存,占用量也较低,使得体验非常流畅。

该种适用于3d模型资源的大规模展示的内存管理方法,通过将所有3d模型资源都进行分类形成互斥资源组,互斥资源组中包括具有互斥关系的3d模型资源,取互斥资源组中3d模型资源占用的上限,分配一段内存。这样内存内置分配了一次,以后就不再释放这段内存了。最终达到的效果就是,刚开始就分配完所有的内存。接着不论如何改变互斥资源组中3d模型资源,都可以快速替换,不需要重新释放和申请内存。内存占用非常稳定。

该种适用于3d模型资源的大规模展示的内存管理方法,还包括步骤s5,在新增3d模型资源时,更新互斥资源配置表。

该种适用于3d模型资源的大规模展示的内存管理方法,还包括步骤s6,在删除3d模型资源时,更新互斥资源配置表。

该种适用于3d模型资源的大规模展示的内存管理方法,能够保证内存占用非常稳定,保证几乎稳定不变的内存,且占用量也较低,进而能够使得浏览器在切换3d方案的时候非常流畅。


技术特征:

1.一种适用于3d模型资源的大规模展示的内存管理方法,其特征在于:包括以下步骤,

s1、设置3d模型资源之间的互斥关系,分别形成互斥资源组;

s2、计算步骤s1所得各互斥资源组中3d模型资源所需分配的内存大小,得出该互斥资源组所需分配的内存大小;

s3、依据步骤s2中所得互斥资源组所需分配的内存大小,为各互斥资源组分配固定内存,并建立互斥资源配置表;

s4、在加载3d模型资源时,读取互斥资源配置表,将与加载的3d模型资源归属同一互斥资源组且在占用固定内存的原3d模型资源,替换为加载的3d模型资源,并更新互斥资源配置表。

2.如权利要求1所述的适用于3d模型资源的大规模展示的内存管理方法,其特征在于:在一个实施方式中,还包括步骤s5,在新增3d模型资源时,更新互斥资源配置表。

3.如权利要求1所述的适用于3d模型资源的大规模展示的内存管理方法,其特征在于:在一个实施方式中,还包括步骤s6,在删除3d模型资源时,更新互斥资源配置表。

4.如权利要求1-3任一项所述的适用于3d模型资源的大规模展示的内存管理方法,其特征在于:在一个实施方式中,步骤s2中,计算各互斥资源组中3d模型资源所需分配的内存大小,得出该互斥资源组所需分配的内存大小,具体为,依据该互斥资源组中的3d模型资源所需分配的最大内存,得出该互斥资源组所需分配的内存。

5.如权利要求1-3任一项所述的适用于3d模型资源的大规模展示的内存管理方法,其特征在于:在一个实施方式中,步骤s3中,将互斥资源配置表保存在用于展示3d模型的服务器中。

6.如权利要求1-3任一项所述的适用于3d模型资源的大规模展示的内存管理方法,其特征在于:在一个实施方式中,步骤s3中互斥资源配置表包括互斥资源组的各3d模型资源、3d模型资源的url路径和互斥资源组的所需分配固定内存的大小。

7.如权利要求1所述的适用于3d模型资源的大规模展示的内存管理方法,其特征在于:在一个实施方式中,客户端获取到服务器上的互斥资源配置表后,根据互斥资源配置表中信息申请内存地址,同时客户端对互斥资源配置表的内容进行更新。

技术总结
本发明提供一种适用于3D模型资源的大规模展示的内存管理方法,通过设置3D模型资源之间的互斥关系,分别形成互斥资源组;得出该互斥资源组所需分配的内存大小;为各互斥资源组分配固定内存,并建立互斥资源配置表;在加载3D模型资源时,读取互斥资源配置表,将与加载的3D模型资源归属同一互斥资源组且在占用固定内存的原3D模型资源,替换为加载的3D模型资源,并更新互斥资源配置表。该方法能够实现同一互斥资源组的3D模型资源占用固定内存的快速替换,无需要重新释放和申请内存,保证了内存的占用非常稳定,进而保证了应用程序运行的稳定性。

技术研发人员:陈旋;吕成云;王晓璐
受保护的技术使用者:江苏艾佳家居用品有限公司
技术研发日:2019.12.27
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-59610.html

最新回复(0)