平码五不中公式规律
  • / 11
  • 下载费用:30 金币  

JAVA卡系统堆碎片整理方法.pdf

关 键 ?#21097;?/dt>
JAVA 系统 碎片 整理 方法
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
摘要
申请专利号:

CN201210595902.5

申请日:

2012.12.28

公开号:

CN103914388A

公开日:

2014.07.09

当前法律状态:

撤回

有效性:

无权

法?#19978;?#24773;: 发明专利申请公布后的视为撤回IPC(主分类):G06F 12/02申请公布日:20140709|||著录事项变更IPC(主分类):G06F 12/02变更事项:申请人变更前:北京中电华大电子设计有限责任公司变更后:北京中电华大电子设计有限责任公司变更事项:地址变更前:100102 北京市朝阳区利泽中二路2号望京科技创业园A座五层变更后:102209 北京市昌平区北七家未来科技城南区中国电子网络安全和信息化产业基地C栋|||实质审查的生效IPC(主分类):G06F 12/02申请日:20121228|||公开
IPC分类号: G06F12/02 主分类号: G06F12/02
申请人: 北京中电华大电子设计有限责任公司
发明人: 芦蓉; 刘宏梅
地址: 100102 北京市朝阳区利泽中二路2号望京科技创业园A座五层
优?#28909;ǎ?/td>
专利代理机构: 代理人:
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201210595902.5

授权公告号:

|||||||||

法律状态公告日:

2017.05.03|||2015.10.28|||2014.08.06|||2014.07.09

法律状态类型:

发明专利申请公布后的视为撤回|||著录事项变更|||实质审查的生效|||公开

摘要

本发明涉及JAVA卡系统堆碎片整理方法,包括以下步骤:步骤一、遍历堆空闲空间管理表,?#39029;?#26368;高地址的空闲块和次高地址的空闲块;步骤二、将这两个空闲块之间的内容向最高地址的空闲块处搬运;步骤三、合并这两个空闲块,修改堆管理表中这两个空闲块信息;步骤四、修改JAVA卡对象头信息中的对象内容地址;步骤五、转到步骤一,直到堆空闲空间管理表中只剩下一个空闲块为止。本发明所提供的JAVA卡系统堆空间碎片整理方法将对象删除所导致的堆空间碎片进行高效率整理,使得JAVA智能卡的有限存储空间得到了更合理的应用。

权利要求书

权利要求书
1.  JAVA卡系统堆空间碎片整理方法,所述JAVA卡系统包括堆空闲空间管理表,堆空闲空间管理表记录空闲块信息以及存储对象头和对象内容,其特征在于所述方法包括以下步骤:
步骤一、遍历堆空闲空间管理表,?#39029;?#26368;高地址的空闲块和次高地址的空闲块;
步骤二、将最高地址的空闲块和次高地址的空闲块之间的对象内容向最高地址的空闲块处搬运;
步骤三、合并最高地址的空闲块和次高地址的空闲块,修改堆空闲空间管理表中这两个空闲块信息;
步骤四、修改对象头中的对象内容地址;
步骤五、转到步骤一继续进行,直到堆空闲空间管理表中只剩下一个空闲块为止。

2.  如权利要求1所述的方法,其特征在于修改堆空闲空间管理表中最高地址的空闲块和次高地址的空闲块时,删除最高地址的空闲块的记录,修改次高地址的空闲块的大小表项=最高地址的空闲块大小+次高地址的空闲块大小,不修改次高地址的空闲块的起始地址。

3.  如权利要求1所述的方法,其特征在于修改对象头中的对象内容地址时,修改对象头中的对象内容地址=原对象内容地址+最高地址的空闲块大小。

4.  如权利要求1所述的方法,其特征在于若搬运的数据大小小于等于最高地址空闲块大小,将搬运的数据直?#26377;?#20837;到最高地址的空闲块;若搬运的数据大小大于最高地址的空闲块大小,则将搬运的数据进行拆分,搬运的次数N=搬运的数据大小/最高地址空闲块大小。

5.  如权利要求1所述的方法,其特征在于搬运开始时,使用事务备份机制在EEPROM系统数据区备份最高地址的空闲块大小、每次搬运的源地址和目的地址、搬运块剩余大小,如果在进行搬运过程中发生掉电,则检查事务备份标识是否有效,如果无效,则直接读出EEPROM系统数据区中最高地址的空闲块大小、搬运的源地址、目的地址、剩余块大小;如果事务备份标识有效,则应先根据事务机制恢复搬运的源地址、目的地址、块剩余大小数据段,清除事务备份标识,然后继续搬运操作。

6.  如权利要求1所述的方法,其特征在于?#21271;?#21382;堆空闲空间管理表,只剩下一个空闲块,找不出次高地址的空闲块,则表明JAVA卡系统堆空间碎片整理完毕,此时空闲块的最低地址相邻于对象头空间所?#21152;?#30340;最高地址。

7.  如权利要求1所述的法,其特征在于:堆空闲空间管理表记录每个空闲空间的起始地址和大小,起始地址?#21152;?个?#32440;冢?#22823;小也?#21152;?个?#32440;凇?BR>
8.  如权利要求1所述的方法,其特征在于:合并后的空闲块,即是下次步骤一中的最高地址的空闲块。

9.  根据权利要求1所述的JAVA卡系统堆空间碎片整理方法,其特征在于:在碎片整理过程中不整理对象头空间。

说明书

说明书JAVA卡系统堆碎片整理方法
技术领域
本发明涉及智能卡领域,尤其涉及一种JAVA卡系统堆空间碎片整理方法及对象管理方法。
背景技术
智能卡自诞生起,几十年来,随着集成电路技术、计算机技术和信息安全技术的发展,从接触式卡发展到射频卡甚至多界面卡,从单一应用发展到多应用,种类更加丰富,技术也更趋先进。中国的智能卡产业及应用?#21152;?#20108;十世纪九十年代初,是伴随着中国政府启动的“金卡工程”而发展起来的,?#20004;?#24050;有十?#25913;?#30340;历史。目前在中国更多政府部门和行业推广应用了智能卡,包括?#29992;?#36523;份证、电子护照、社会保障卡、交通卡、加油卡、电话卡、移动电话卡、付费电视卡、水电气表卡、会计卡、税务卡、网银U盾、校园卡等等。这样,支持多应用的智能卡软件平台成为关键,特别是JAVA卡。由于JAVA卡的存储空间有限,用户只能通过删除不用的应用、增?#26377;?#30340;应用,来满足不同时期的使用需求。随着用户对应用的更替,将产生很多空间碎片,?#26723;?#20102;有限的系统空间的使用效率。因此,怎样更有效率的整理JAVA卡的有限空间,从而提高空间使用效率是一个迫切需要解决的问题。
针对JAVA卡技术的上述?#27605;藎?#26412;发明要提供一种高效率的JAVA卡系统堆空间碎片整理方法,及便于碎片整理的对象管理方法,实现JAVA系统堆空间的碎片整理,提高JAVA卡的空间使用效率。
发明内容
本发明的目的是提供一种高效率的JAVA卡系统堆空间碎片整理方法。
JAVA卡系统堆空间碎片整理的时机为:如果无法分配对象(对象域或者头),则进行碎片整理。
JAVA卡系统堆空间碎片整理的原则为:在碎片整理过程中不整理对象头空间。
为了实现上述发明目的,本方法提供的JAVA卡系统对空间碎片整理方法包括以下步骤:
步骤一、遍历堆空闲空间管理表,?#39029;?#26368;高地址的空闲块和次高地址的空闲块;
步骤二、将这两个空闲块之间的内容向最高地址的空闲块处搬运;
步骤三、合并这两个空闲块,修改堆管理表中这两个空闲块信息;
步骤四、修改JAVA卡对象头信息中的对象内容地址;
步骤五、转到步骤一继续进行,直到堆空闲空间管理表中只剩下一个空闲块为止。
堆空闲空间管理表记录每个空闲空间的起始地址和大小。起始地址?#21152;?个?#32440;冢?#22823;小也?#21152;?个?#32440;凇?
合并两个空闲块时,由于两个空闲块间的内容搬到了最高地址的空闲块处,将堆空闲空间管理表中最高地址的空闲块的记录?#38236;簦?#20462;改次高地址的空闲块的记录,只修改次高地址的空闲块的大小,不需要修改其起始地址。
从步骤五转到步骤一之前,本次步骤三所合并后的空闲块,即是下次步骤一中的最高地址的空闲块。
本发明所提供的JAVA卡堆空间碎片整理方法及对象管理方法将系统中的堆碎片进行高效率的整理,使得JAVA卡的有限存储空间得到了更合理的应用。
详细的内容将在具体实施例中作更清楚的介绍。
附图说明
图1是本发明所涉及的堆空闲空间管理表的示意图;
图2是本发明所涉及的JAVA卡系统堆碎片整理方法的基本流程图;
图3是按照本发明所涉及的JAVA卡系统堆碎片整理方法,对图1进?#26800;?#19968;轮整理之后的结果示意图;
图4是按照本发明所涉及的JAVA卡系统堆碎片整理方法,在图3的基础上,对图1进?#26800;?#20108;轮整理之后的结果示意图,也是按照本方法进行整理之后的结果。
以下结合实施例及其附图作进一步的详细说明。
具体实施方式
1、遍历堆空间管理表,将最高地址和次高地址的空闲块?#39029;?#26469;(将对象域向高地址处集中)。
2、记?#21450;?#36816;开始标识movFlg(EEPROM的系统数据);
3、确定搬运?#27573;В?#24182;搬运。
a)
如果最高空闲块block1的地址?#27573;?#20026;[empty_addr_L,empty_addr_H],
次高空闲块block2的地址?#27573;?#20026;[empty_addr_l,empty_addr_h]
搬运的块的最高地址move_addr_h=empty_addr_L-1
搬运的块的最低地址move_addr_l=empty_addr_h-1。

b)比较最高地址空闲块与搬运块的大小
搬运块大小小于等于最高地址空闲块大小:将搬运块直?#26377;?#20837;到最高地址空闲块。
搬运块大小大于最高地址空闲块大小,则将搬运块进行拆分,拆分成几次进行搬运:搬运的次数N=搬运块大小/最高地址空闲块大小。
不管是一次搬运还是几次搬运,搬运的过程中,均记录最高地址空闲块大小、每次搬运的源地址srcAddr和destAddr、搬运块剩余大小(记录在EEPROM系统数据区),以防止搬运过程中出现意外掉电,以防止数据混乱。在搬运过程中,掉电时,下次?#31995;紓?#21487;以继续完成 所有搬运工作。
上面步骤中,每次搬运操作中,更新搬运块源地址、目的地址、剩余块大小时,应使用事务机制,在EEPROM中事务缓冲区备份,格式为:EEPROM目的地址+Size+更新后的数据值。Log写入后,将translogFlg标识设为有效。再接着更新EEPROM系统区的搬运块源地址、目的地址、剩余块大小数据段。完成更新后,清除translogFlg有效标识。这样做的目的,是为了防止修改这几个字段过程中,意外掉电,导致数据写入错误。
当搬运过程中,出现掉电,下次?#31995;紓?#36890;过检查movFlg,得知上次掉电正在进行堆空间搬移操作,且操作未完成,则检查translogFlg标识是否有效,如果无效,则直接读出EEPROM系统区的最高地址空闲块大小、搬运块源地址、目的地址、剩余块大小数据段,同样比较剩余块大小与最高地址空闲块大小,确定搬运的次数,并按照上面的步骤,完成搬运;如果translogFlg标识有效,则应先根据事务Log恢复搬运块源地址、目的地址、剩余块大小数据段,清除事务Log有效标识,然后继续包的搬运操作。
搬?#31169;?#26463;,合并空闲块,修改次高地址空闲块大小为(原来的该空闲块大小+最高地址空闲块大小)。修改的过程也同样使用事务机制。
c)空闲块合并
修改堆管理表中对应空闲块的信息,合并空闲块,从空闲块管理表中?#19994;?#26631;识这两个空闲块的表项(空闲块地址分别等于这两个空闲块的地址的两个表项);修改空闲块管理表中次高地址空闲块的大小=最高地址空闲块大小+次高地址空闲块大小;修改空闲块管理表中最高地址空闲块表项的大小为0;如果搬迁的数据块中有堆管理表,则修改堆管理表的地址(即修改上一个堆管理表的指向下一个堆管理表的指针)。修改的过程仍需应用事务机制。
d)记录对象搬迁的结果:
搬迁前起始地址搬迁的数据块的大小搬迁后的新起始地址
修改对象信息。查找搬运的内容所属的对象,即对象域地址在搬运块的最高地址与最低地址之间。?#19994;?#35813;对象后,修改对象头中的对象域地址=原地址+最高地址空闲块大小。
其中,因为包组件和堆管理表也随着对象域一起搬迁,因此不会出现包组件、堆管理表或者对象域被空闲块拆分存储的现象。
为了防止修改过程出现掉电的情况,使堆中数据混乱,修改之前应先进行必要数据的备 份(备份到EEPROM的系统数据区),备份数据包括:堆空闲管理表次高空闲块的大小(新值)、最高地址空闲块大小(新值)、对象域地址(新值),以防止修改数据过程中,意外掉电,使数据混乱。当修改这些数据时,发生掉电,再次?#31995;?#26102;,可以根据备份数据是否有效的标识,以确定是否将备份的数据写入到EEPROM区域。
每个备份数据Log的格式为:目的地址(4?#32440;?+长度(2?#32440;?+数据;上面的数据被作为至少3个Log备份到EEPROM的系统区。
4、转到第1步,继续。最高地址的空闲块block1不用再找了,?#27425;?#27493;骤2中合并的空闲块,只要?#19994;?#27425;高的即可。
5、当找不到次高的,说明已经整理到最后了,空闲块的最低地址应该相邻于对象头空间所?#21152;?#30340;最高地址

如图1所示,整个堆空间包含空闲块和已分配块。堆中的空闲块的信息?#25216;?#24405;在相应的堆空闲信息管理表中,通过查找空闲块管理表,可以获得堆空闲空间的起始地址以及空闲空间的大小;堆中存储有若干对象,对象的信息按照对象头与对象内容在堆中分开存储,并且头与内容相互关联。
堆中的存储的对象由于经历反复的创建、删除,已经不再连续,而是零散的?#21152;?#20102;堆得空间,同?#24065;步?#22534;的空闲空间分为了多了小块。
如图2所示,包括以下步骤:
步骤一、遍历堆空闲空间管理表,?#39029;?#26368;高地址的空闲块和次高地址的空闲块;
步骤二、将这两个空闲块之间的内容向最高地址的空闲块处搬运;
步骤三、合并这两个空闲块,修改堆管理表中这两个空闲块信息;
步骤四、修改JAVA卡对象头信息中的对象内容地址;
步骤五、转到步骤一继续进行,直到堆空闲空间管理表中只剩下一个空闲块为止。
如图3所示,当按照图2的步骤,执?#26800;?#19968;次整理,?#19994;?#26368;高地址的空闲块1和次高地址的空闲块2,然后将对象M内容搬运到最高地址空闲块的高端。
搬运完成后,空闲块2与空闲块1合并成为一个空闲块,对象头M的对象M内容地址被修改为搬运后的新值。
如图4所示,由于堆中仍然有2个空闲块,所以需要继续堆的整理。将空闲块1的内容搬运到上面步骤合并的空闲块2的高端,并仍采用上面的搬运方法。
搬运完成后,空闲块2与3合并成为一个空闲块,对象头1的对象1内容地址被修改为搬运后的新值。

关于本文
本文标题:JAVA卡系统堆碎片整理方法.pdf
链接地址:http://www.pqiex.tw/p-6115809.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

[email protected] 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
平码五不中公式规律 新11选5在线 新疆11选5在哪 新疆喜乐彩彩票控 大乐透定位选号技巧公式 七星彩走势图开奖 玩北京赛车技巧心得 世纪娱乐棋牌游戏 大乐透走势图2带坐标9188 体彩开奖结果 3d2017没出过的号码