发明名称 一种使用寄生对象管理对象堆的方法和装置
摘要 本发明公开一种使用寄生对象管理对象堆的方法和装置,通过使用寄生对象标记对象堆中的空闲空间,并根据寄生对象在对象堆中为待创建对象申请空间,能够有效地管理对象堆中的空闲空间,提高对象堆的空间利用率;在执行完删包或删应用操作后,以及在检测到java卡应用程序调用与垃圾回收对应的预设API后,仅需要执行一个空操作,而不再需要通过移动对象堆中的已创建对象进行垃圾回收,减少了对已创建对象的移动次数以及移动对象带来的时间消耗,提高了Java卡虚拟机的工作效率,并在一定程度上达到磨损平衡。
申请公布号 CN103559076B 申请公布日期 2016.09.28
申请号 CN201310537587.5 申请日期 2013.11.04
申请人 飞天诚信科技股份有限公司 发明人 陆舟;于华章
分类号 G06F9/455(2006.01)I 主分类号 G06F9/455(2006.01)I
代理机构 代理人
主权项 一种使用寄生对象管理对象堆的方法,其特征在于,所述寄生对象用于标记所述对象堆中的空闲空间,包括地址字节和容量字节,所述地址字节用于表示所述寄生对象的后一个寄生对象的地址,所述容量字节用于表示所述寄生对象所标记的空闲空间的大小,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卡虚拟机从当前寄生对象的地址开始,为所述待创建对象申请空间,并对当前寄生对象的前一个寄生对象,和/或所述系统信息中存储的所述对象堆中的第一个寄生对象的地址进行更新。
地址 100085 北京市海淀区学清路9号汇智大厦B楼17层