一种使用寄生对象管理对象堆的方法和装置制造方法及图纸

技术编号:9642294 阅读:99 留言:0更新日期:2014-02-07 00:41
本发明专利技术公开一种使用寄生对象管理对象堆的方法和装置,通过使用寄生对象标记对象堆中的空闲空间,并根据寄生对象在对象堆中为待创建对象申请空间,能够有效地管理对象堆中的空闲空间,提高对象堆的空间利用率;在执行完删包或删应用操作后,以及在检测到java卡应用程序调用与垃圾回收对应的预设API后,仅需要执行一个空操作,而不再需要通过移动对象堆中的已创建对象进行垃圾回收,减少了对已创建对象的移动次数以及移动对象带来的时间消耗,提高了Java卡虚拟机的工作效率,并在一定程度上达到磨损平衡。

【技术实现步骤摘要】
【专利摘要】本专利技术公开一种使用寄生对象管理对象堆的方法和装置,通过使用寄生对象标记对象堆中的空闲空间,并根据寄生对象在对象堆中为待创建对象申请空间,能够有效地管理对象堆中的空闲空间,提高对象堆的空间利用率;在执行完删包或删应用操作后,以及在检测到java卡应用程序调用与垃圾回收对应的预设API后,仅需要执行一个空操作,而不再需要通过移动对象堆中的已创建对象进行垃圾回收,减少了对已创建对象的移动次数以及移动对象带来的时间消耗,提高了Java卡虚拟机的工作效率,并在一定程度上达到磨损平衡。【专利说明】一种使用寄生对象管理对象堆的方法和装置
本专利技术涉及计算机
,特别是涉及一种使用寄生对象管理对象堆的方法和 装直。
技术介绍
现有技术中,Java卡虚拟机将已创建的对象存储到对象堆中,在需要使用已创建的对象时,从对象表中获取该对象的引用值,并使用该引用值访问对象堆中的该对象。Java卡虚拟机在创建新对象时,为新对象申请的空间通常为对象堆中位于最后一个对象后的空间。如果对象堆中位于最后一个对象后的空间小于新对象占用的空间,Java卡虚拟机会返回资源不足的错误信息。此外,Java卡虚拟机在执行完删包或删应用操作后,以及在检测到java卡应用程序调用与垃圾回收对应的预设API后,会进行垃圾回收操作,即,扫描对象堆,通过移动对象使对象堆中的已创建的对象连续排列,将不同对象之间的空间碎片集合成一个连续的存储空间。专利技术人在实现本专利技术的过程中,发现现有技术至少存在以下缺陷:由于对象堆中的各个对象的生命周期不同,经过多次创建和删除对象后,对象堆中的可用空间通常是不连续的,而在 创建新对象时,为新对象申请的空间通常为对象堆中位于最后一个对象后的空间,因此,在进行垃圾回收之前,已创建对象之间的空闲碎片无法得到有效的利用,导致对象堆的空间利用率低。另外,当上层应用频繁地调用API进行垃圾回收,Java卡虚拟机也需要频繁移动对象合并碎片,时间消耗较大,降低了 Java卡虚拟机的工作效率。
技术实现思路
本专利技术提供了一种使用寄生对象管理对象堆的方法和装置,以解决现有技术中对象堆的空间利用率低的缺陷。本专利技术提供了一种使用寄生对象管理对象堆的方法,所述寄生对象用于标记所述对象堆中的空闲空间,包括地址字节和容量字节,所述地址字节用于表示所述寄生对象的后一个寄生对象的地址,所述容量字节用于表示所述寄生对象所标记的空闲空间的大小,Java卡虚拟机的系统信息中存储有所述对象堆中的第一个寄生对象的地址;所述Java卡虚拟机需要在所述对象堆中创建非寄生对象时,执行以下操作:S1、所述Java卡虚拟机读取所述对象堆中的第一个寄生对象,将所述第一个寄生对象作为当前寄生对象;S2、所述Java卡虚拟机判断当前寄生对象所标记的空闲空间是否小于待创建对象所占用的空间,如果是,则执行步骤S3 ;否则,执行步骤SlO ;S3、所述Java卡虚拟机判断所述对象堆中是否存在当前寄生对象的后一个寄生对象,如果是,则执行步骤S4 ;否则,执行步骤S5 ;S4、所述Java卡虚拟机将当前寄生对象的后一个寄生对象,作为更新后的当前寄生对象,并返回步骤S2 ;S5、所述Java卡虚拟机将所述对象堆中的所有空闲空间进行合并,根据合并后的空闲空间创建对应的寄生对象,判断所述合并后的空闲空间是否小于所述待创建对象所占用的空间,如果是,则将创建的寄生对象的地址作为所述对象堆中的第一个寄生对象的地址保存到所述系统信息中,结束流程;否则,执行步骤S6 ;S6、所述Java卡虚拟机读取当前寄生对象的地址字节,将读取到的结果作为所述对象堆中的第一个寄生对象的地址保存到所述系统信息中;S7、所述Java卡虚拟机从当前寄生对象的地址开始,为所述待创建对象申请空间,获取申请空间后的剩余空间;S8、所述Java卡虚拟机判断所述剩余空间是否大于寄生对象所占用的空间,如果是,则执行步骤S9 ;否则,结束流程;S9、所述Java卡虚拟机从所述剩余空间的首地址开始,创建第一寄生对象,将所述第一寄生对象的地址作为所述对象堆中的第一个寄生对象的地址保存到所述系统信息中,结束流程;S10、所述Java卡虚拟机从当前寄生对象的地址开始,为所述待创建对象申请空间,并对当前寄生对象的前一个寄生对象,和/或所述系统信息中存储的所述对象堆中的第一个寄生对象的地址进行更新。本专利技术还提供了一种使用寄生对象管理对象堆的装置,所述寄生对象用于标记所述对象堆中的空闲空间,包括地址字节和容量字节,所述地址字节用于表示所述寄生对象的后一个寄生对象的地址,所述容量字节用于表示所述寄生对象所标记的空闲空间的大小,系统信息中存储有所述对象堆中的第一个寄生对象的地址;所述装置,包括:第一读取模块,用于在需要在所述对象堆中创建非寄生对象时,读取所述对象堆中的第一个寄生对象,将所述第一个寄生对象作为当前寄生对象,并触发第一判断模块;第一判断模块,用于判断当前寄生对象所标记的空闲空间是否小于待创建对象所占用的空间,并在判断出当前寄生对象所标记的空闲空间小于待创建对象所占用的空间时,触发第二判断模块;第二判断模块,用于在所述第一判断模块判断出当前寄生对象所标记的空闲空间小于待创建对象所占用的空间时,判断所述对象堆中是否存在当前寄生对象的后一个寄生对象,并在判断出所述对象堆中不存在当前寄生对象的后一个寄生对象时,触发合并模块;第一更新模块,用于在所述第二判断模块判断出所述对象堆中存在当前寄生对象的后一个寄生对象时,将当如寄生对象的后一个寄生对象,作为更新后的当如寄生对象,并触发所述第二判断模块;合并模块,用于将所述对象堆中的所有空闲空间进行合并,根据合并后的空闲空间创建对应的寄生对象;第三判断模块,用于判断所述合并模块合并后的空闲空间是否小于所述待创建对象所占用的空间,并在判断出所述合并后的空闲空间小于所述待创建对象所占用的空间时,触发第一处理模块;保存模块,用于在所述第三判断模块判断出所述合并后的空闲空间小于所述待创建对象所占用的空间时,将创建的寄生对象的地址作为所述对象堆中的第一个寄生对象的地址保存到所述系统信息中;第一处理模块,用于读取当前寄生对象的地址字节,将读取到的结果作为所述对象堆中的第一个寄生对象的地址保存到所述系统信息中;从当前寄生对象的地址开始,为所述待创建对象申请空间,获取申请空间后的剩余空间;第四判断模块,用于判断所述第一处理模块获取的所述剩余空间是否大于寄生对象所占用的空间;第一创建模块,用于在所述第四判断模块判断出所述剩余空间大于寄生对象所占用的空间时,从所述剩余空间的首地址开始,创建第一寄生对象,将所述第一寄生对象的地址作为所述对象堆中的第一个寄生对象的地址保存到所述系统信息中;第二处理模块,用于在所述第一判断模块判断出当前寄生对象所标记的空闲空间不小于待创建对象所占用的空间时,从当前寄生对象的地址开始,为所述待创建对象申请空间,并对当前寄生对象的前一个寄生对象,和/或所述系统信息中存储的所述对象堆中的第一个寄生对象的地址进行更新。本专利技术达到的有益效果:通过使用寄生对象标记对象堆中的空闲空间,并根据寄生对象在对象堆中为待创建对象申请空间,能够有效地管理对象堆中的空闲空间,提高对象堆的空间利用率;在执本文档来自技高网
...

【技术保护点】
一种使用寄生对象管理对象堆的方法,其特征在于,所述寄生对象用于标记所述对象堆中的空闲空间,包括地址字节和容量字节,所述地址字节用于表示所述寄生对象的后一个寄生对象的地址,所述容量字节用于表示所述寄生对象所标记的空闲空间的大小,Java卡虚拟机的系统信息中存储有所述对象堆中的第一个寄生对象的地址;所述Java卡虚拟机需要在所述对象堆中创建非寄生对象时,执行以下操作:S1、所述Java卡虚拟机读取所述对象堆中的第一个寄生对象,将所述第一个寄生对象作为当前寄生对象;S2、所述Java卡虚拟机判断当前寄生对象所标记的空闲空间是否小于待创建对象所占用的空间,如果是,则执行步骤S3;否则,执行步骤S10;S3、所述Java卡虚拟机判断所述对象堆中是否存在当前寄生对象的后一个寄生对象,如果是,则执行步骤S4;否则,执行步骤S5;S4、所述Java卡虚拟机将当前寄生对象的后一个寄生对象,作为更新后的当前寄生对象,并返回步骤S2;S5、所述Java卡虚拟机将所述对象堆中的所有空闲空间进行合并,根据合并后的空闲空间创建对应的寄生对象,判断所述合并后的空闲空间是否小于所述待创建对象所占用的空间,如果是,则将创建的寄生对象的地址作为所述对象堆中的第一个寄生对象的地址保存到所述系统信息中,结束流程;否则,执行步骤S6;S6、所述Java卡虚拟机读取当前寄生对象的地址字节,将读取到的结果作为所述对象堆中的第一个寄生对象的地址保存到所述系统信息中;S7、所述Java卡虚拟机从当前寄生对象的地址开始,为所述待创建对象申请空间,获取申请空间后的剩余空间;S8、所述Java卡虚拟机判断所述剩余空间是否大于寄生对象所占用的空间,如果是,则执行步骤S9;否则,结束流程;S9、所述Java卡虚拟机从所述剩余空间的首地址开始,创建第一寄生对象,将所述第一寄生对象的地址作为所述对象堆中的第一个寄生对象的地址保存到所述系统信息中,结束流程;S10、所述Java卡虚拟机从当前寄生对象的地址开始,为所述待创建对象申请空间,并对当前寄生对象的前一个寄生对象,和/或所述系统信息中存储的所 述对象堆中的第一个寄生对象的地址进行更新。...

【技术特征摘要】

【专利技术属性】
技术研发人员:陆舟于华章
申请(专利权)人:飞天诚信科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1