一种基于CIM模型的查询访问方法、装置及系统与流程

文档序号:14156287阅读:288来源:国知局

本发明涉及数据传输技术领域,特别涉及一种基于cim模型的查询访问方法、装置及系统。



背景技术:

iec61970系列标准提出的公共信息模型(cim)在电力系统得到了广泛的应用。采用java开发较大规模电网模型的拓扑分析、数据质量整体检查等客户端应用时,需要基于对象的层次包含关系和对象间的关联关系进行多轮次的遍历处理,也就是需要针对对象分类集合以及对象间的网状、树型关系(各个对象构成数据结构中的一个个节点),根据需要完成宽度优先或深度优先的分析。在分析过程中,在特定的阶段,某些对象数据会被反复访问,之后对另外的对象进行处理时,这些对象可能较长时间不会被访问。访问需求随着分析侧重变化而随之变化。

为完成上述cim对象数据访问,现有的技术方案主要有两种,一种是客户端每次需要访问cim对象数据时,直接通过接口从服务器查询,客户端本身不做缓存。另一种是客户端每次对需要使用的数据建立全集,即缓存全部的电网cim对象,并建立对象间的引用。第一种方案与服务器交互频繁,导致大量网络交互操作,一方面加重服务器负担,另一方面对象数据获取效率较低;第二种方案由于cim对象的网状关系,导致几乎全部对象均是基于对象间的“强引用(strongreference,对象的引用被持有时,垃圾搜集不能释放被引用的对象)”关联,java虚拟机的垃圾搜集无法释放部分不常用的对象,因此需要配置非常大的内存资源,否则容易引发内存不足(outofmemory)异常。



技术实现要素:

本发明的主要目的是提出一种基于cim模型的查询访问方法,旨在用软引用替代cim对象间的强引用关系,由软引用池和弱引用池形成二级阶梯式的cim对象缓存池,解决了短期频繁访问cim对象时与服务器过度交互以及垃圾搜集不能释放被引用的cim对象的问题。

为实现上述目的,本发明提出的基于cim模型的目标对象的查询访问方法,包括如下步骤:

s10基于cim模型生成cim对象类,其中该cim对象类包括唯一标识cim对象的id和记录cim对象当前访问时间的时标;

s20以所述cim对象的id为引用池条目的斌值,分别建立软引用池和弱引用池,由软引用池和弱引用池依次形成二级阶梯式的cim对象缓存池;

s30接收目标对象的查询访问请求,获取目标对象id;

s40查询目标对象id是否与cim对象缓存池所引用的cim对象的id相匹配;若上述查询成功,则访问所查询到的cim对象;

s50若上述查询失败,转向服务器进行查询访问。

优选地,所述s40的步骤包括:

s401查询目标对象id是否与软引用池的条目相匹配,若相匹配,则查询软引用池的条目成功,访问该软引用池的条目所引用的cim对象,且该cim对象的时标记录当前访问的时间,若上述查询失败,转向查询弱引用池的条目;

s402若查询目标对象id与弱引用池的条目匹配成功,移动该弱引用池的条目所引用的cim对象至软引用池,且删除以该cim对象的id所斌值的弱引用池的条目,获取该cim对象的id,斌值该cim对象所新增的软引用池的条目,访问所斌值条目所引用的cim对象,且该cim对象的时标记录当前访问的时间。

优选地,所述s50的步骤包括:

s501若目标对象id在cim对象缓存池查询失败,转向服务器执行查询,若通过目标对象id在服务器查询成功,创建与目标对象具有相同id的cim对象,以该cim对象的id为引用池条目的斌值,存入软引用池,访问所查询到的cim对象,且该cim对象的时标记录当前访问的时间;

s502若通过目标对象id在服务器查询失败,返回目标对象的查询访问请求失败。

优选地,所述访问所查询到的cim对象的步骤包括:

s601判断所查询到的cim对象是否与目标对象相匹配;

s602若相匹配,访问所查询到的cim对象,且该cim对象的时标记录当前访问的时间;

s603若不相匹配,则返回目标对象的查询访问请求失败。

本发明还提出一种基于cim模型的查询访问装置,包括:

生成模块,用于基于cim模型生成cim对象类,其中该cim对象类包括唯一标识cim对象的id和记录cim对象当前访问时间的时标;

建立模块,用于以所述cim对象的id为引用池条目的斌值,分别建立软引用池和弱引用池,由软引用池和弱引用池依次形成二级阶梯式的cim对象缓存池;

获取模块,用于接收目标对象的查询访问请求,获取目标对象id;

缓存池查询模块,用于查询目标对象id是否与cim对象缓存池所引用的cim对象的id相匹配;若上述查询成功,则访问所查询到的cim对象,且该cim对象的时标记录当前访问的时间;

服务器查询模块,用于若上述查询失败,转向服务器进行查询访问。

优选地,所述缓存池查询模块包括:

软引用池查询单元,用于采用目标对象id查询软引用池的条目,若目标对象id查询到与之相匹配的cim对象的id,则查询软引用池的条目成功,访问该软引用池的条目所引用的cim对象,且该cim对象的时标记录当前访问的时间,若上述查询失败,转向查询弱引用池的条目;

弱引用池查询单元,用于若采用目标对象id查询弱引用池的条目成功,移动该弱引用池的条目所引用的cim对象至软引用池,且删除以该cim对象的id所斌值的弱引用池的条目,获取该cim对象的id,斌值该cim对象的软引用,构成引用池条目加入软引用池,访问所斌值条目内的cim对象,且该cim对象的时标记录当前访问的时间。

优选地,所述服务器查询模块包括:

查询成功单元,用于若目标对象id在cim对象缓存池查询失败,转向服务器执行查询,若通过目标对象id在服务器查询成功,创建与目标对象具有相同id的cim对象,以该cim对象的id为引用池条目的斌值,存入软引用池,访问所查询到的cim对象,且该cim对象的时标记录当前访问的时间;

查询失败单元,用于若通过目标对象id在服务器查询失败,返回目标对象的查询访问请求失败。

优选地,还包括访问记录模块,所述访问记录模块包括:

判断单元,用于判断所查询到的cim对象是否与目标对象相匹配;

访问记录单元,用于若相匹配,访问所查询到的cim对象,且该cim对象的时标记录当前访问的时间;

访问失败单元,用于若不相匹配,则返回目标对象的查询访问请求失败。

本发明还提出一种基于cim模型的查询访问系统,包括服务器,还包括如上述的基于cim模型的目标对象的查询访问装置,用于实现如上述的基于cim模型的目标对象的查询访问方法。

本技术方案公开了一种基于cim模型的目标对象查询访问方法、装置及系统和一种cim电网模型对象数据去强引用的多级缓存方法、装置及系统,上述两种方法相结合,解决了一种cim对象去强引用的动态缓存数据传输及处理的问题,本技术方案与已有技术相比,本发明的有益效果体现在:

本发明用在电网cim模型数据分析等应用软件中,特别适用于需要进行模型的纵向层级遍历分析和横向电网拓扑遍历分析的情形。对于大规模的电网,因为内存资源受限或者数据量庞大,通常无法将整个电网模型都装进内存,在这种情况下,本发明的cim对象去强引用的动态缓存处理方法就有明显的优势。本发明在缓存层用软引用替代cim对象间的强引用关系,由软引用池和弱引用池形成二级阶梯式的cim对象缓存池,解决了短期频繁访问cim对象时服务器过度交互以及垃圾搜集不能释放被引用的cim对象的问题。主要体现在:

1)平衡访问效率和内存使用率。在内存用量超过特定限度(70%)后,根据内存使用率来动态设置过期期限,将内存有效地维持在一个合理的水平。在内存使用率高时缩短过期期限,可以快速地从cim对象缓存中腾出内存,并且清空弱引用缓冲池,尽可能增加可用内存;而在内存使用率低时不释放缓存对象,增加缓存数据量,提高对象检索的命中率,减少服务器查询。

2)灵活适应为应用配置的内存总量。如果配置给应用的内存总量相对于要分析的电网模型数据,其容量足够,就不需释放软引用管理的数据对象,也不必向服务器重复查询;如果待分析的电网模型数据量大,无法完全装入内存,那么程序仍可正常运行,通过二个缓冲区的轮转提高对象数据检索效率。

3)有效防止内存溢出。采用软引用和弱引用机制,即使在极端内存限制情况下,也不会内存溢出,因为软引用和弱引用持有的资源都是可以被jvm垃圾收集器回收的。

4)使用简单。对象缓存的应用端仅需按需访问对象数据,不需要考虑数据如何从服务器加载,也不需要主动去释放。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。

图1为本发明一种基于cim模型的查询访问方法一实施例的方法流程图;

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明,若本发明实施例中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。

另外,若本发明实施例中有涉及“第一”、“第二”等的描述,则该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

如图1所示,本发明提出一种基于cim模型的查询访问方法,包括如下步骤:

s10基于cim模型生成cim对象类,其中该cim对象类包括唯一标识cim对象的id和记录cim对象当前访问时间的时标;

s20以所述cim对象的id为引用池条目的斌值,分别建立软引用池和弱引用池,由软引用池和弱引用池依次形成二级阶梯式的cim对象缓存池;

s30接收目标对象的查询访问请求,获取目标对象id;

s40查询目标对象id是否与cim对象缓存池所引用的cim对象的id相匹配;若上述查询成功,则访问所查询到的cim对象;

s50若上述查询失败,转向服务器进行查询访问。

在本实施例中,本发明提出了一种基于cim模型的查询访问方法,所述s10,基于cim模型生成cim类对应的java类,这些java类需要直接或间接(通过父类)继承自一个特定的类,即cim对象(cimobject),cim对象包括以下属性:id,cim对象的唯一性标识,和timestamp时标,用于记录cim对象当前访问时间;所述s20,目标对象访问管理类构建cim对象缓存池,用hashmap构建一个主引用池为软引用池,一个辅引用池为弱引用池,由软引用池和弱引用池形成一个二级阶梯式cim对象缓存池,两个引用池的条目的键均为cimobject的id,软引用池中条目的取值为softreference<cimobject>,弱引用池中条目的取值为weakreference<cimobject>(即,弱引用池中数据条目为id与softreference<cimobject>数据对(pair);弱引用池中数据条目为id与weakreference<cimobject>数据对);所述s30,对象访问管理类,基于由软引用池和弱引用池形成的二级阶梯式cim对象缓存池,接收到目标对象的查询访问请求,从所接收到的查询访问请求中获取目标对象id,这个获取,可以是上层调用直接传过来的一个id,也可以是根据过滤条件获取模块从自己的缓存获取等其他方式查找出一个对象的id,也隐含了把一个批量的查询,通过获取模块转变成针对一个一个对象的查询;所述s40,采用所获取的目标对象id,与二级阶梯式cim对象缓存池所引用的cim对象的id相匹配,即与软引池的条目和/或弱引用池的条目的键的斌值相匹配,若匹配成功,则取得该id对应的cim对象的软引用,然后用软引用的get方法,获取对象的“强”引用,获取cim对象成功,则说明软引用持有的这个cim对象存储良好,在本地访问该cim对象;以目标对象id是5的对象的查询软引用池的条目为例,

软引用池是这样的:

hashmap<id,softreference<cimobject>>,

里面的条目可能是:

<2,softreference<cimobject>obsta2>

<3,softreference<cimobject>obvl0>

<5,softreference<cimobject>obbay1>

<10,softreference<cimobject>obbreaker1>

...

<15,softreference<cimobject>obtransformerx>

用目标对象id为5来访问,在hashmap中检索键值为5(id=5)的条目,即进行id为5的对象匹配查询,若检索成功,则获得id为5的对象的软引用,然后用软引用的get方法,获取对象的“强”引用;所述s50,若上述查询不成,说明该目标对象没有存储于该cim对象缓存池,转向服务器进行查询访问。

本发明提出了一种基于cim模型的查询访问方法,首先,用软引用关系替代cim对象间的强引用关系,解决了由于cim对象的网状关系,导致几乎全部对象均是基于对象间的“强引用(strongreference,对象的引用被持有时,垃圾搜集不能释放被引用的对象)”关联,java虚拟机的垃圾搜集无法释放部分不常用的对象,因此需要配置非常大的内存资源,否则容易引发内存不足(outofmemory)异常的问题;其次,建立由软引用池(softreference,对象引用被持有时,如果垃圾搜集判断内存不足,可以释放被引用的对象)和弱引用池(weakreference,只要垃圾搜集发现弱引用,即可释放其引用的对象),形成的二级阶梯式的cim对象的缓存池,为应用多次访问cim对象提供快速的本地化检索。

在本技术方案中的系统需要反复使用大量cim对象进行电网整体分析、计算,系统原本需要多次从服务器获取数据后进行分析,现在通过增加二级阶梯式cim对象缓存处理来降低服务器交互频度、提升对象数据访问效率。本发明用在电网cim模型数据分析等应用软件中,特别适用于需要进行模型的纵向层级遍历分析和横向电网拓扑遍历分析的情形。对于大规模的电网,因为内存资源受限或者数据量庞大,通常无法将整个电网模型都装进内存,在这种情况下,本发明的cim对象去强引用的动态缓存处理方法就有明显的优势。

进一步地,所述s40的步骤包括:

s401查询目标对象id是否与软引用池的条目相匹配,若相匹配,则查询软引用池的条目成功,访问该软引用池的条目所引用的cim对象,且该cim对象的时标记录当前访问的时间,若上述查询失败,转向查询弱引用池的条目;

s402若查询目标对象id与弱引用池的条目匹配成功,移动该弱引用池的条目所引用的cim对象至软引用池,且删除以该cim对象的id所斌值的弱引用池的条目,获取该cim对象的id,斌值该cim对象所新增的软引用池的条目,访问所斌值条目所引用的cim对象,且该cim对象的时标记录当前访问的时间。

在本实施例中,所述s40的具体步骤:所述s401,为先从取代cim对象间的强引用关系的软引用池开始查询,在缓存层,软引用池的软引用解决了之前cim对象间的强引用网状关系,若在软引用池查询成功,获取一个softreference<cimobject>取值;如果在软引用池中未检索到与待访问对象id匹配的条目,继续用对象id检索弱引用池;所述s402,若采用目标对象id查询弱引用池的条目成功,将该对象从弱引用池移动到软引用池(删除弱引用池中指定的id←→weakreferenct<cimobject>条目,在软引用池中增加一条id←→softreferenct<cimobject>);如果在弱引用池中检索不成功,表明软引用和弱引用两级缓存中均无目标对象,则开始步骤s50,由此,形成不同引用强度的缓存层级,以便java虚拟机根据需要按层次回收内存,达到动态控制数据缓存量、降低较大电网模型的实际内存开销从而有效避免内存溢出的效果,同时降低与服务器交互量、提升目标对象查询效率。

进一步地,所述s50的步骤包括:

s501;若目标对象id在cim对象缓存池查询失败,转向服务器执行查询,若通过目标对象id在服务器查询成功,创建与目标对象具有相同id的cim对象,以该cim对象的id斌值cim对象的软引用条目,软引用池引用该cim对象,访问软引用池所引用的cim对象,且该cim对象的时标记录当前访问的时间;

s502若通过目标对象id在服务器查询失败,返回目标对象的查询访问请求失败。

在本实施例中,本发明所述s50的具体步骤:所述s501,对象访问管理类请求向服务器查询目标对象,若查询成功,则创建cimobject对象实例,用对象id和softreference<cimobject>构建数据对存入软引用池;所述s502,若查询不成功,说明系统中无该对象存在,返回null给对象请求程序。

进一步地,所述访问所查询到的cim对象的步骤包括:

s601判断所查询到的cim对象是否与目标对象相匹配;

s602若相匹配,访问所查询到的cim对象,且该cim对象的时标记录当前访问的时间;

s603若不相匹配,则返回目标对象的查询访问请求失败。

在本实施例中,本发明补充说明,通过该软引用提取对象引用(cimobject实体引用),如果成功(由软引用持有的该对象实例未被java垃圾搜集系统释放),此时对象缓存于软引用池,返回cimobject实体引用给访问者;在该cimobject对象的时间属性中记录最后访问时间;如果通过获取的软引用提取不到对象引用,软引用的get方法返回null,则表明该对象由于java垃圾搜集已经释放,返回空引用给访问者;

本发明还提出一种基于cim模型的查询访问装置,该基于cim模型的目标对象的查询访问装置用以实现上述基于cim模型的目标对象的查询访问方法,由于本基于cim模型的目标对象的查询访问装置采用了上述所有实施例的全部技术方案,因此至少具有上述实施例的技术方案所带来的所有有益效果,在此不再一一赘述。其中,本基于cim模型的目标对象的查询访问装置,包括:

生成模块10,用于基于cim模型生成cim对象类,其中该cim对象类包括唯一标识cim对象的id和记录cim对象当前访问时间的时标;

建立模块20,用于以所述cim对象的id为引用池条目的斌值,分别建立软引用池和弱引用池,由软引用池和弱引用池依次形成二级阶梯式的cim对象缓存池;

获取模块30,用于接收目标对象的查询访问请求,获取目标对象id;

缓存池查询模块40,用于查询目标对象id是否与cim对象缓存池所引用的cim对象的id相匹配;若上述查询成功,则访问所查询到的cim对象,且该cim对象的时标记录当前访问的时间;

服务器查询模块50,用于若上述查询失败,转向服务器进行查询访问。

进一步地,所述缓存池查询模块40包括:

软引用池查询单元401,用于采用目标对象id查询软引用池的条目,若目标对象id查询到与之相匹配的cim对象的id,则查询软引用池的条目成功,访问该软引用池的条目所引用的cim对象,且该cim对象的时标记录当前访问的时间,若上述查询失败,转向查询弱引用池的条目;

弱引用池查询单元402,若采用目标对象id查询弱引用池的条目成功,移动该弱引用池的条目所引用的cim对象至软引用池,且删除以该cim对象的id所斌值的弱引用池的条目,获取该cim对象的id,斌值该cim对象所新增的软引用池的条目,访问所斌值条目内的cim对象,且该cim对象的时标记录当前访问的时间。

进一步地,所述服务器查询模块50包括:

查询成功单元501,用于若目标对象id在cim对象缓存池查询失败,转向服务器执行查询,若通过目标对象id在服务器查询成功,创建与目标对象具有相同id的cim对象,以该cim对象的id斌值cim对象的软引用,构成引用池条目存入软引用池,访问所查询到的cim对象,且该cim对象的时标记录当前访问的时间;

查询失败单元502,用于若通过目标对象id在服务器查询失败,返回目标对象的查询访问请求失败。

进一步地,还包括访问记录模块60,所述访问记录模块60包括:

判断单元601,用于判断所查询到的cim对象是否与目标对象相匹配;

访问记录单元602,用于若相匹配,访问所查询到的cim对象,且该cim对象的时标记录当前访问的时间;

访问失败单元603,用于若不相匹配,则返回目标对象的查询访问请求失败。

本发明还提出一种基于cim模型的查询访问系统,包括服务器,还包括上述的基于cim模型的目标对象的查询访问装置,用于实现上述的基于cim模型的目标对象的查询访问方法。

本文所说的服务器是指分析应用软件获取cim对象数据的来源。

本文所说的系统是指安装有这个分析应用软件的任何服务器及任何终端所构成的一个网络系统。

在一个软件进程中,各个线程都可以用来缓存的。只是这些线程都是属于一个进程,有一个共同的进程地址空间。主线程与cim对象过期检查线程都属于一个进程,这个cim对象过期检查线程是相对主线程较低优先级的线程,这个进程取来cim对象数据做分析应用,这个二级阶梯式cim对象缓存池是本分析应用软件内置的一个缓存体系。

本技术方案的另一项发明构思:开启一个较低优先级的守护线程,周期性地分析整理软引用池中的数据,以内存使用率(程序已用内存与程序可用内存的比值)的第一阈值,作为守护线程执行软引用缓存区域整理动作的临界值。

一种cim电网模型对象数据去强引用的多级缓存方法,步骤如下:

(1)用软引用和弱引用构建二级阶梯式缓存池存储cim对象,软引用池为主缓存,弱引用池为辅缓存。

(2)每次从cim对象缓存中取出的cim对象,都会记录它最近一次被取用的时间。

(3)由低优先级的守护线程周期性遍历分析软件引用池,按照内存的使用水平来动态设置过期期限,将过期对象移至弱引用池。

(4)判断当前引用所指向的cim对象是否过期,过期条件:以主服务器的内存使用率是否已经达到70%,如果大于70%,再次判断,内存使用率是否大于85%,如果内存使用率大于85%,则释放弱用池所引用的缓存数据,如果大于70%而小于或等于85%,则进行软引用池的整理,如果内存使用率小于70%,则不进行软引用池整理。补充说明:内存使用率70%是软引用池是否需要整理操作的预定阈值,可以理解为一个实施例之一的经验值,同理,内存使用率85%是弱引用池是否需要整理操作的预定阈值。

(5)计算本次整理操作所使用的动态过期期限时长,逐级查询二级阶梯式缓存池中的cim对象,且获取所查询到的cim对象的最近访问时间(最近访问时间,即当前访问时间,可以理解地是,当前cim对象所使用时间),判断当前引用所指向的cim对象是否过期,过期条件成立,将对象移至弱引用池管理,根据内存使用率的动态过期期限的关系式:

(i=1,2,3,…,t1=0,s1=10)

其中,u为进行整理时的内存使用率;ti为最近一次软引用池整理过程所耗时间;si为从上次软引用缓冲区整理操作结束到本次软引用缓冲区整理操作开始的时间间隔。内存消耗首次大于70%而执行软引用池整理时,texp为内存使用率的动态过期期限,以10为例,也就是10秒内未用的对象会从软引用池移至弱引用池,

如果检索到被访问的cim对象在弱引用池里,那么将把这个cim对象升级为软引用池持有,且timestamp时标记录cim对象在软引用池中当前的访问时间。

本发明在上述查询访问操作之后,若内存使用率达到一定限度后,则由守护线程启用“对象过期”检查,将动态计算的过期期限时长内未被访问的对象由软引用池移至弱引用池。由软引用池和弱引用池形成不同引用强度的缓存层级,以便java虚拟机根据需要按层次回收内存,达到动态控制数据缓存量、降低较大电网模型的实际内存开销从而有效避免内存溢出的效果,同时降低与服务器交互量、提升对象查询效率。

本技术方案公开了一种基于cim模型的目标对象查询访问方法、装置及系统和一种cim电网模型对象数据去强引用的多级缓存方法、装置及系统,上述两种方法相结合,解决了一种cim对象去强引用的动态缓存数据传输及处理的问题,本技术方案与已有技术相比,本发明的有益效果体现在:

本发明用在电网cim模型数据分析等应用软件中,特别适用于需要进行模型的纵向层级遍历分析和横向电网拓扑遍历分析的情形。对于大规模的电网,因为内存资源受限或者数据量庞大,通常无法将整个电网模型都装进内存,在这种情况下,本技术方案就有明显的优势。主要体现在:

1)平衡访问效率和内存使用率,在内存用量超过特定限度(70%)后,根据内存使用率来动态设置过期期限,将内存有效地维持在一个合理的水平。在内存使用率高时缩短过期期限,可以快速地从cim对象缓存中腾出内存,并且清空弱引用缓冲池,尽可能增加可用内存;而在内存使用率低时不释放缓存对象,增加缓存数据量,提高对象检索的命中率,减少服务器查询。灵活适应为应用配置的内存总量,如果配置给应用的内存总量相对于要分析的电网模型数据,其容量足够,就不需释放软引用管理的数据对象,也不必向服务器重复查询;如果待分析的电网模型数据量大,无法完全装入内存,那么程序仍可正常运行,通过二个缓冲区的轮转释放,提高对象数据检索效率。

2)灵活适应为应用配置的内存总量。如果配置给应用的内存总量相对于要分析的电网模型数据,其容量足够,就不需释放软引用管理的数据对象,也不必向服务器重复查询;如果待分析的电网模型数据量大,无法完全装入内存,那么程序仍可正常运行,通过二个缓冲区的轮转提高对象数据检索效率。

3)有效防止内存溢出。采用软引用和弱引用机制,即使在极端内存限制情况下,也不会内存溢出,因为软引用和弱引用持有的资源都是可以被jvm垃圾收集器回收的。

4)使用简单。对象缓存的应用端仅需按需访问对象数据,不需要考虑数据如何从服务器加载,也不需要主动去释放。

以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1