一种基于java卡虚拟机中对象管理的方法技术

技术编号:8735060 阅读:212 留言:0更新日期:2013-05-26 11:43
本发明专利技术公开一种基于java卡虚拟机中对象管理的方法,包括:java卡虚拟机在运行过程中检测到创建对象操作,将创建对象的基本信息填入到第二存储空间中,获得将要创建对象的偏移地址并将其存储到子对象表的空表项中,计算将要创建对象的索引值用其更新存储的第一索引值;检测到删除CAP镜像操作,将第一存储空间中的与删除CAP镜像ID对应的CAP镜像标记为碎片,依次检测第一存储空间中组件的类型,如为子对象表则将子对象表向高地址方向移动,修改存储在主对象表中子对象表的偏移地址,如为CAP镜像则将CAP镜像向高地址方向移动,更新CAP镜像的地址。本发明专利技术采用主对象表和子对象表来管理对象,简单方便,且能节省资源。

【技术实现步骤摘要】

本专利技术涉及对象管理领域,尤其涉及。
技术介绍
Java卡中使用对象来保存一些数据,对象包括对象头和数据域,对象头和数据域可以分开存储,也可以连续存储。永久性对象的对象头和数据域顺序排列的存储在EEPROM中;临时对象的对象头和数据域是分开存储的,其中对象头在EEPROM中,而数据域在RAM中。永久性对象和临时对象的对象头在eeprom中按创建的先后顺序排列。现有技术中,对象每次被调用时,都需要引用该对象的地址,占用较大的空间;且在进行垃圾回收时,如果移动了一个对象,则该对象的偏移地址就会改变,相应的就需要把每个引用该对象的偏移地址改一遍。现有技术中对象管理较繁琐,而且浪费资源和时间。
技术实现思路
本专利技术的目的是为了克服现有技术的不足,提供。本专利技术提供,包括:步骤S1: java卡虚拟机在java卡程序运行过程中检测将要进行的操作,如是进行创建对象操作,则执行步骤S2 ;如是进行删除CAP镜像操作则执行步骤S7 ;步骤S2:所述java卡虚拟机在第二存储空间中申请将要创建对象的空间,填入所述将要创建对象的基本信息,获得所述将要创建对象的偏移地址;步骤S3:所述java卡虚拟机判断子对象表中是否有空表项,是则将所述空表项所在子对象表作为当前子对象表,执行步骤S6,否则执行步骤S4 ;步骤S4:所述java卡虚拟机判断主对象表中是否有空表项,是则执行步骤S5,否则报错,返回步骤Si ;步骤S5:所述java卡虚拟机根据子对象表的长度从第一存储空间中申请空间建立新子对象表,并获取所述新子对象表的偏移地址,将所述新子对象表的偏移地址存储到所述主对象表的空表项中,将所述新子对象表作为当前子对象表并获取其第一个空表项,执行步骤S6 ;步骤S6: java卡虚拟机将所述将要创建对象的偏移地址存储到当前子对象表的空表项中,计算所述将要创建对象的索引值并将其存储到操作栈中,并用所述将要创建对象的索引值更新存储的第一索引值,返回步骤SI ;步骤S7:所述java卡虚拟机将所述第一存储空间中的与删除CAP镜像ID对应的CAP镜像标记为碎片,获取所述第一存储空间中的地址最大的组件作为当前组件;步骤S8:所述java卡虚拟机将所述第一存储空间中最高地址与当前组件地址之间的碎片大小加到第一存储空间的总碎片大小上,检测当前组件的类型,如为子对象表则执行步骤S9,如为CAP镜像则执行步骤SlO ;所述第一存储空间的总碎片大小初始值为O ;步骤S9:所述java卡虚拟机在所述第一存储空间中将所述子对象表向高地址方向移动所述第一存储空间的总碎片大小,修改存储在主对象表中所述子对象表的偏移地址,执行步骤Sll ;步骤SlO:所述java卡虚拟机在所述第一存储空间中将所述CAP镜像向高地址方向移动所述第一存储空间的总碎片大小,更新所述CAP镜像的地址,执行步骤Sll ;步骤Sll:所述java卡虚拟机判断在所述第一存储空间中是否存在地址较小的当前组件的相邻组件,是则将所述相邻组件作为当前组件,返回步骤S8,否则返回步骤SI。进一步地,所述步骤SI中当所述java卡虚拟机在运行过程中检测将要进行垃圾回收操作时执行步骤S12 ;当所述java卡虚拟机在运行过程中检测将要进行修改对象操作时执行步骤S17 ;步骤S12:所述java卡虚拟机扫描所述第二存储空间,合并碎片,判断是否有需要回收的对象,是则执行步骤S13,否则执行步骤S15 ;步骤S13:所述java卡虚拟机将需要回收对象的大小加到第二存储空间的总碎片大小上,清空所述子对象表中存储所述需要回收对象的偏移地址的表项;所述第二存储空间的总碎片大小初始值为O ;步骤S14:所述java卡虚拟机判断所述需要回收对象的索引值是否小于存储的第一索引值,是则用所述需要回收对象的索引值更新所述第一索引值,返回步骤S12,否则返回步骤S12 ;步骤S15:所述java卡虚拟机判断所述第二存储空间的总碎片大小是否为O,是则返回步骤SI,否则执行步骤S16 ;步骤S16:所述java卡虚拟机根据所述第二存储空间的总碎片大小移动需要回收对象之后的对像,并更新所述子对象表中存储的移动对像的偏移地址,返回步骤SI ;步骤S17:所述java卡虚拟机从所述操作栈中取出要修改对象的索引值及修改参数,检查所述修改参数的有效性,如所述修改参数无效则报错,返回步骤Si;如所述修改参数有效则根据所述要修改对象的索引值获取对应的对象,并修改所述对象的数据域,返回步骤SI。其中,所述步骤SI具体为:当所述java卡虚拟机在java卡程序运行过程中检测到预设字符时,则进行创建对象操作;当所述java卡虚拟机在所述java卡程序运行过程中接收到预设APDU命令时,则根据所述APDU命令中的删除CAP镜像ID进行删除对应CAP镜像的操作;当所述java卡虚拟机在所述java卡程序运行过程中检测到固定接口函数时,则在本条命令结束时进行垃圾回收操作;当所述java卡虚拟机在java卡程序运行过程中检测到有赋值的对象时,则进行修改对象操作。其中,所述步骤S3-步骤S4具体包括:步骤al:所述java卡虚拟机根据存储的第一索引值计算得到子对象表的表项索引值和主对象表的表项索引值;步骤a2:所述java卡虚拟机判断所述主对象表的表项索引值是否大于所述主对象表的长度,是则报错,返回步骤SI,否则执行步骤a3 ;步骤a3:所述java卡虚拟机根据所述主对象表的表项索引值从主对象表的对应表项中获取子对象表的偏移地址;步骤a4:所述java卡虚拟机判断所述子对象表的偏移地址是否为空,是则执行步骤S5,否则执行步骤a5;步骤a5:所述java卡虚拟机根据所述子对象表的表项索引值获取对应表项,并判断所述对应表项是否为空,是则执行步骤S6,否则所述子对象表的表项索引值自加1,执行步骤a6 ;步骤a6:所述java卡虚拟机判断所述子对象表的表项索引值是否大于所述子对象表的长度,是则所述主对象表的表项索引值自加1,返回步骤a2 ;否则执行步骤a5。其中,所述步骤al具体为:所述java卡虚拟机用所述第一索引值除以子对象表的长度,商为所述主对象表的表项索引值,余数为所述子对象表的表项索引值。其中,所述步骤S6中计算所述将要创建对象的索引值,具体为:用主对象表的表项索引值乘以子对象表的长度,再加上当前子对象表的表项索引值得到所述将要创建对象的索引值。其中,所述步骤S7-步骤Sll包括:步骤bl:所述java卡虚拟机解析接收到的预设APDU命令得到所述删除CAP镜像ID,将所述第一存储空间中的与删除CAP镜像ID对应的CAP镜像标记为碎片;步骤b2:所述java卡虚拟机获取所述第一存储空间的最高地址并将其作为当前地址;步骤b3:所述java卡虚拟机判断当前地址是否大于第一存储空间中已使用空间的起始地址,是则执行步骤b4,否则执行步骤b5 ;步骤b4:所述java卡虚拟机判断所述第一存储空间中是否有地址较小的相邻组件,是则第一存储空间的总碎片大小自加当前地址与所述相邻组件地址之间的碎片大小,执行步骤b6,否则第一存储空间的总碎片大小自加当前地址与第一存储空间中已使用空间的起始地址之间的碎片大小,执行步骤b5 ;所述第一存储空间的总碎片大小初始值为O ;步骤b5本文档来自技高网...

【技术保护点】
一种基于java卡虚拟机中对象管理的方法,其特征在于,包括:步骤S1:java卡虚拟机在java卡程序运行过程中检测将要进行的操作,如是进行创建对象操作,则执行步骤S2;如是进行删除CAP镜像操作则执行步骤S7;步骤S2:所述java卡虚拟机在第二存储空间中申请将要创建对象的空间,填入所述将要创建对象的基本信息,获得所述将要创建对象的偏移地址;步骤S3:所述java卡虚拟机判断子对象表中是否有空表项,是则将所述空表项所在子对象表作为当前子对象表,执行步骤S6,否则执行步骤S4;步骤S4:所述java卡虚拟机判断主对象表中是否有空表项,是则执行步骤S5,否则报错,返回步骤S1;步骤S5:所述java卡虚拟机根据子对象表的长度从第一存储空间中申请空间建立新子对象表,并获取所述新子对象表的偏移地址,将所述新子对象表的偏移地址存储到所述主对象表的空表项中,将所述新子对象表作为当前子对象表并获取其第一个空表项,执行步骤S6;步骤S6:java卡虚拟机将所述将要创建对象的偏移地址存储到当前子对象表的空表项中,计算所述将要创建对象的索引值并将其存储到操作栈中,并用所述将要创建对象的索引值更新存储的第一索引值,返回步骤S1;步骤S7:所述java卡虚拟机将所述第一存储空间中的与删除CAP镜像ID对应的CAP镜像标记为碎片,获取所述第一存储空间中的地址最大的组件作为当前组件;步骤S8:所述java卡虚拟机将所述第一存储空间中最高地址与当前组件地址之间的碎片大小加到第一存储空间的总碎片大小上,检测当前组件的类型,如为子对象表则执行步骤S9,如为CAP镜像则执行步骤S10;所述第一存储空 间的总碎片大小初始值为0;步骤S9:所述java卡虚拟机在所述第一存储空间中将所述子对象表向高地址方向移动所述第一存储空间的总碎片大小,修改存储在主对象表中所述子对象表的偏移地址,执行步骤S11;步骤S10:所述java卡虚拟机在所述第一存储空间中将所述CAP镜像向高地址方向移动所述第一存储空间的总碎片大小,更新所述CAP镜像的地址,执行步骤S11;步骤S11:所述java卡虚拟机判断在所述第一存储空间中是否存在地址较小的当前组件的相邻组件,是则将所述相邻组件作为当前组件,返回步骤S8,否则返回步骤S1。...

【技术特征摘要】

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

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

1