CN103914388A - Java卡系统堆碎片整理方法 - Google Patents
Java卡系统堆碎片整理方法 Download PDFInfo
- Publication number
- CN103914388A CN103914388A CN201210595902.5A CN201210595902A CN103914388A CN 103914388 A CN103914388 A CN 103914388A CN 201210595902 A CN201210595902 A CN 201210595902A CN 103914388 A CN103914388 A CN 103914388A
- Authority
- CN
- China
- Prior art keywords
- free block
- free
- address
- superlatively
- heap
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Abstract
本发明涉及JAVA卡系统堆碎片整理方法,包括以下步骤:步骤一、遍历堆空闲空间管理表,找出最高地址的空闲块和次高地址的空闲块;步骤二、将这两个空闲块之间的内容向最高地址的空闲块处搬运;步骤三、合并这两个空闲块,修改堆管理表中这两个空闲块信息;步骤四、修改JAVA卡对象头信息中的对象内容地址;步骤五、转到步骤一,直到堆空闲空间管理表中只剩下一个空闲块为止。本发明所提供的JAVA卡系统堆空间碎片整理方法将对象删除所导致的堆空间碎片进行高效率整理,使得JAVA智能卡的有限存储空间得到了更合理的应用。
Description
技术领域
本发明涉及智能卡领域,尤其涉及一种JAVA卡系统堆空间碎片整理方法及对象管理方法。
背景技术
智能卡自诞生起,几十年来,随着集成电路技术、计算机技术和信息安全技术的发展,从接触式卡发展到射频卡甚至多界面卡,从单一应用发展到多应用,种类更加丰富,技术也更趋先进。中国的智能卡产业及应用始于二十世纪九十年代初,是伴随着中国政府启动的“金卡工程”而发展起来的,至今已有十几年的历史。目前在中国更多政府部门和行业推广应用了智能卡,包括居民身份证、电子护照、社会保障卡、交通卡、加油卡、电话卡、移动电话卡、付费电视卡、水电气表卡、会计卡、税务卡、网银U盾、校园卡等等。这样,支持多应用的智能卡软件平台成为关键,特别是JAVA卡。由于JAVA卡的存储空间有限,用户只能通过删除不用的应用、增加新的应用,来满足不同时期的使用需求。随着用户对应用的更替,将产生很多空间碎片,降低了有限的系统空间的使用效率。因此,怎样更有效率的整理JAVA卡的有限空间,从而提高空间使用效率是一个迫切需要解决的问题。
针对JAVA卡技术的上述缺陷,本发明要提供一种高效率的JAVA卡系统堆空间碎片整理方法,及便于碎片整理的对象管理方法,实现JAVA系统堆空间的碎片整理,提高JAVA卡的空间使用效率。
发明内容
本发明的目的是提供一种高效率的JAVA卡系统堆空间碎片整理方法。
JAVA卡系统堆空间碎片整理的时机为:如果无法分配对象(对象域或者头),则进行碎片整理。
JAVA卡系统堆空间碎片整理的原则为:在碎片整理过程中不整理对象头空间。
为了实现上述发明目的,本方法提供的JAVA卡系统对空间碎片整理方法包括以下步骤:
步骤一、遍历堆空闲空间管理表,找出最高地址的空闲块和次高地址的空闲块;
步骤二、将这两个空闲块之间的内容向最高地址的空闲块处搬运;
步骤三、合并这两个空闲块,修改堆管理表中这两个空闲块信息;
步骤四、修改JAVA卡对象头信息中的对象内容地址;
步骤五、转到步骤一继续进行,直到堆空闲空间管理表中只剩下一个空闲块为止。
堆空闲空间管理表记录每个空闲空间的起始地址和大小。起始地址占用3个字节,大小也占用3个字节。
合并两个空闲块时,由于两个空闲块间的内容搬到了最高地址的空闲块处,将堆空闲空间管理表中最高地址的空闲块的记录删掉,修改次高地址的空闲块的记录,只修改次高地址的空闲块的大小,不需要修改其起始地址。
从步骤五转到步骤一之前,本次步骤三所合并后的空闲块,即是下次步骤一中的最高地址的空闲块。
本发明所提供的JAVA卡堆空间碎片整理方法及对象管理方法将系统中的堆碎片进行高效率的整理,使得JAVA卡的有限存储空间得到了更合理的应用。
详细的内容将在具体实施例中作更清楚的介绍。
附图说明
图1是本发明所涉及的堆空闲空间管理表的示意图;
图2是本发明所涉及的JAVA卡系统堆碎片整理方法的基本流程图;
图3是按照本发明所涉及的JAVA卡系统堆碎片整理方法,对图1进行第一轮整理之后的结果示意图;
图4是按照本发明所涉及的JAVA卡系统堆碎片整理方法,在图3的基础上,对图1进行第二轮整理之后的结果示意图,也是按照本方法进行整理之后的结果。
以下结合实施例及其附图作进一步的详细说明。
具体实施方式
1、遍历堆空间管理表,将最高地址和次高地址的空闲块找出来(将对象域向高地址处集中)。
2、记录搬运开始标识movFlg(EEPROM的系统数据);
3、确定搬运范围,并搬运。
a)
如果最高空闲块block1的地址范围为[empty_addr_L,empty_addr_H],
次高空闲块block2的地址范围为[empty_addr_l,empty_addr_h]
搬运的块的最高地址move_addr_h=empty_addr_L-1
搬运的块的最低地址move_addr_l=empty_addr_h-1。
b)比较最高地址空闲块与搬运块的大小
搬运块大小小于等于最高地址空闲块大小:将搬运块直接写入到最高地址空闲块。
搬运块大小大于最高地址空闲块大小,则将搬运块进行拆分,拆分成几次进行搬运:搬运的次数N=搬运块大小/最高地址空闲块大小。
不管是一次搬运还是几次搬运,搬运的过程中,均记录最高地址空闲块大小、每次搬运的源地址srcAddr和destAddr、搬运块剩余大小(记录在EEPROM系统数据区),以防止搬运过程中出现意外掉电,以防止数据混乱。在搬运过程中,掉电时,下次上电,可以继续完成所有搬运工作。
上面步骤中,每次搬运操作中,更新搬运块源地址、目的地址、剩余块大小时,应使用事务机制,在EEPROM中事务缓冲区备份,格式为:EEPROM目的地址+Size+更新后的数据值。Log写入后,将translogFlg标识设为有效。再接着更新EEPROM系统区的搬运块源地址、目的地址、剩余块大小数据段。完成更新后,清除translogFlg有效标识。这样做的目的,是为了防止修改这几个字段过程中,意外掉电,导致数据写入错误。
当搬运过程中,出现掉电,下次上电,通过检查movFlg,得知上次掉电正在进行堆空间搬移操作,且操作未完成,则检查translogFlg标识是否有效,如果无效,则直接读出EEPROM系统区的最高地址空闲块大小、搬运块源地址、目的地址、剩余块大小数据段,同样比较剩余块大小与最高地址空闲块大小,确定搬运的次数,并按照上面的步骤,完成搬运;如果translogFlg标识有效,则应先根据事务Log恢复搬运块源地址、目的地址、剩余块大小数据段,清除事务Log有效标识,然后继续包的搬运操作。
搬运结束,合并空闲块,修改次高地址空闲块大小为(原来的该空闲块大小+最高地址空闲块大小)。修改的过程也同样使用事务机制。
c)空闲块合并
修改堆管理表中对应空闲块的信息,合并空闲块,从空闲块管理表中找到标识这两个空闲块的表项(空闲块地址分别等于这两个空闲块的地址的两个表项);修改空闲块管理表中次高地址空闲块的大小=最高地址空闲块大小+次高地址空闲块大小;修改空闲块管理表中最高地址空闲块表项的大小为0;如果搬迁的数据块中有堆管理表,则修改堆管理表的地址(即修改上一个堆管理表的指向下一个堆管理表的指针)。修改的过程仍需应用事务机制。
d)记录对象搬迁的结果:
搬迁前起始地址 | 搬迁的数据块的大小 | 搬迁后的新起始地址 |
修改对象信息。查找搬运的内容所属的对象,即对象域地址在搬运块的最高地址与最低地址之间。找到该对象后,修改对象头中的对象域地址=原地址+最高地址空闲块大小。
其中,因为包组件和堆管理表也随着对象域一起搬迁,因此不会出现包组件、堆管理表或者对象域被空闲块拆分存储的现象。
为了防止修改过程出现掉电的情况,使堆中数据混乱,修改之前应先进行必要数据的备份(备份到EEPROM的系统数据区),备份数据包括:堆空闲管理表次高空闲块的大小(新值)、最高地址空闲块大小(新值)、对象域地址(新值),以防止修改数据过程中,意外掉电,使数据混乱。当修改这些数据时,发生掉电,再次上电时,可以根据备份数据是否有效的标识,以确定是否将备份的数据写入到EEPROM区域。
每个备份数据Log的格式为:目的地址(4字节)+长度(2字节)+数据;上面的数据被作为至少3个Log备份到EEPROM的系统区。
4、转到第1步,继续。最高地址的空闲块block1不用再找了,即为步骤2中合并的空闲块,只要找到次高的即可。
5、当找不到次高的,说明已经整理到最后了,空闲块的最低地址应该相邻于对象头空间所占用的最高地址
如图1所示,整个堆空间包含空闲块和已分配块。堆中的空闲块的信息都记录在相应的堆空闲信息管理表中,通过查找空闲块管理表,可以获得堆空闲空间的起始地址以及空闲空间的大小;堆中存储有若干对象,对象的信息按照对象头与对象内容在堆中分开存储,并且头与内容相互关联。
堆中的存储的对象由于经历反复的创建、删除,已经不再连续,而是零散的占用了堆得空间,同时也将堆的空闲空间分为了多了小块。
如图2所示,包括以下步骤:
步骤一、遍历堆空闲空间管理表,找出最高地址的空闲块和次高地址的空闲块;
步骤二、将这两个空闲块之间的内容向最高地址的空闲块处搬运;
步骤三、合并这两个空闲块,修改堆管理表中这两个空闲块信息;
步骤四、修改JAVA卡对象头信息中的对象内容地址;
步骤五、转到步骤一继续进行,直到堆空闲空间管理表中只剩下一个空闲块为止。
如图3所示,当按照图2的步骤,执行第一次整理,找到最高地址的空闲块1和次高地址的空闲块2,然后将对象M内容搬运到最高地址空闲块的高端。
搬运完成后,空闲块2与空闲块1合并成为一个空闲块,对象头M的对象M内容地址被修改为搬运后的新值。
如图4所示,由于堆中仍然有2个空闲块,所以需要继续堆的整理。将空闲块1的内容搬运到上面步骤合并的空闲块2的高端,并仍采用上面的搬运方法。
搬运完成后,空闲块2与3合并成为一个空闲块,对象头1的对象1内容地址被修改为搬运后的新值。
Claims (9)
1.JAVA卡系统堆空间碎片整理方法,所述JAVA卡系统包括堆空闲空间管理表,堆空闲空间管理表记录空闲块信息以及存储对象头和对象内容,其特征在于所述方法包括以下步骤:
步骤一、遍历堆空闲空间管理表,找出最高地址的空闲块和次高地址的空闲块;
步骤二、将最高地址的空闲块和次高地址的空闲块之间的对象内容向最高地址的空闲块处搬运;
步骤三、合并最高地址的空闲块和次高地址的空闲块,修改堆空闲空间管理表中这两个空闲块信息;
步骤四、修改对象头中的对象内容地址;
步骤五、转到步骤一继续进行,直到堆空闲空间管理表中只剩下一个空闲块为止。
2.如权利要求1所述的方法,其特征在于修改堆空闲空间管理表中最高地址的空闲块和次高地址的空闲块时,删除最高地址的空闲块的记录,修改次高地址的空闲块的大小表项=最高地址的空闲块大小+次高地址的空闲块大小,不修改次高地址的空闲块的起始地址。
3.如权利要求1所述的方法,其特征在于修改对象头中的对象内容地址时,修改对象头中的对象内容地址=原对象内容地址+最高地址的空闲块大小。
4.如权利要求1所述的方法,其特征在于若搬运的数据大小小于等于最高地址空闲块大小,将搬运的数据直接写入到最高地址的空闲块;若搬运的数据大小大于最高地址的空闲块大小,则将搬运的数据进行拆分,搬运的次数N=搬运的数据大小/最高地址空闲块大小。
5.如权利要求1所述的方法,其特征在于搬运开始时,使用事务备份机制在EEPROM系统数据区备份最高地址的空闲块大小、每次搬运的源地址和目的地址、搬运块剩余大小,如果在进行搬运过程中发生掉电,则检查事务备份标识是否有效,如果无效,则直接读出EEPROM系统数据区中最高地址的空闲块大小、搬运的源地址、目的地址、剩余块大小;如果事务备份标识有效,则应先根据事务机制恢复搬运的源地址、目的地址、块剩余大小数据段,清除事务备份标识,然后继续搬运操作。
6.如权利要求1所述的方法,其特征在于当遍历堆空闲空间管理表,只剩下一个空闲块,找不出次高地址的空闲块,则表明JAVA卡系统堆空间碎片整理完毕,此时空闲块的最低地址相邻于对象头空间所占用的最高地址。
7.如权利要求1所述的法,其特征在于:堆空闲空间管理表记录每个空闲空间的起始地址和大小,起始地址占用3个字节,大小也占用3个字节。
8.如权利要求1所述的方法,其特征在于:合并后的空闲块,即是下次步骤一中的最高地址的空闲块。
9.根据权利要求1所述的JAVA卡系统堆空间碎片整理方法,其特征在于:在碎片整理过程中不整理对象头空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210595902.5A CN103914388A (zh) | 2012-12-28 | 2012-12-28 | Java卡系统堆碎片整理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210595902.5A CN103914388A (zh) | 2012-12-28 | 2012-12-28 | Java卡系统堆碎片整理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103914388A true CN103914388A (zh) | 2014-07-09 |
Family
ID=51040090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210595902.5A Pending CN103914388A (zh) | 2012-12-28 | 2012-12-28 | Java卡系统堆碎片整理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103914388A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104778128A (zh) * | 2015-04-22 | 2015-07-15 | 东港股份有限公司 | 一种Java卡空闲块管理方法 |
CN110162483A (zh) * | 2018-02-12 | 2019-08-23 | 上海寒武纪信息科技有限公司 | 静态内存碎片整理方法、装置、计算机设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110099326A1 (en) * | 2009-10-27 | 2011-04-28 | Samsung Electronics Co., Ltd. | Flash memory system and defragmentation method |
CN102521145A (zh) * | 2011-12-23 | 2012-06-27 | 东信和平智能卡股份有限公司 | Java卡系统及其空间分配处理方法 |
CN102567522A (zh) * | 2011-12-28 | 2012-07-11 | 北京握奇数据系统有限公司 | 一种智能卡文件系统的管理方法及设备 |
CN102799660A (zh) * | 2012-07-04 | 2012-11-28 | 北京中电华大电子设计有限责任公司 | 一种java卡对象管理方法 |
-
2012
- 2012-12-28 CN CN201210595902.5A patent/CN103914388A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110099326A1 (en) * | 2009-10-27 | 2011-04-28 | Samsung Electronics Co., Ltd. | Flash memory system and defragmentation method |
CN102521145A (zh) * | 2011-12-23 | 2012-06-27 | 东信和平智能卡股份有限公司 | Java卡系统及其空间分配处理方法 |
CN102567522A (zh) * | 2011-12-28 | 2012-07-11 | 北京握奇数据系统有限公司 | 一种智能卡文件系统的管理方法及设备 |
CN102799660A (zh) * | 2012-07-04 | 2012-11-28 | 北京中电华大电子设计有限责任公司 | 一种java卡对象管理方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104778128A (zh) * | 2015-04-22 | 2015-07-15 | 东港股份有限公司 | 一种Java卡空闲块管理方法 |
CN104778128B (zh) * | 2015-04-22 | 2017-11-03 | 东港股份有限公司 | 一种Java卡空闲块管理方法 |
CN110162483A (zh) * | 2018-02-12 | 2019-08-23 | 上海寒武纪信息科技有限公司 | 静态内存碎片整理方法、装置、计算机设备及存储介质 |
CN110162483B (zh) * | 2018-02-12 | 2020-10-20 | 上海寒武纪信息科技有限公司 | 静态内存碎片整理方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10360182B2 (en) | Recovering data lost in data de-duplication system | |
CN102110146B (zh) | 基于键值key-value存储的分布式文件系统元数据管理方法 | |
CN102629247B (zh) | 一种数据处理方法、装置和系统 | |
CN102541757B (zh) | 写缓存方法、缓存同步方法和装置 | |
CN102567427B (zh) | 一种对象数据处理方法及装置 | |
CN103164490B (zh) | 一种不固定长度数据的高效存储实现方法和装置 | |
CN102511044A (zh) | 一种数据删除方法及装置 | |
WO2016086819A1 (zh) | 将数据写入叠瓦状磁记录smr硬盘的方法及装置 | |
CN104809237A (zh) | LSM-tree索引的优化方法和装置 | |
CN105988723A (zh) | 一种快照处理方法及装置 | |
CN102521145A (zh) | Java卡系统及其空间分配处理方法 | |
CN106383666B (zh) | 一种数据存储方法及装置 | |
CN103870492A (zh) | 一种基于键排序的数据存储方法和装置 | |
CN103996412A (zh) | 一种用于智能卡非易失性存储器的掉电保护方法 | |
CN104239443B (zh) | 一种序列化数据操作日志的存储方法 | |
US10409692B1 (en) | Garbage collection: timestamp entries and remove reference counts | |
CN104021145A (zh) | 一种混合业务并发访问的方法和装置 | |
CN110109910A (zh) | 数据处理方法及系统、电子设备和计算机可读存储介质 | |
CN102955792A (zh) | 一种实时全文搜索引擎事务处理的实现方法 | |
CN104238962A (zh) | 向缓存中写入数据的方法及装置 | |
CN103577513A (zh) | 藉延迟节点实例化以缓存xml信息集的系统和/或方法 | |
CN105787037A (zh) | 一种重复数据的删除方法及装置 | |
CN103617260A (zh) | 重复数据删除的索引生成方法及装置 | |
CN100399294C (zh) | 文件的有效数据管理的方法和设备 | |
CN102567415A (zh) | 一种数据库的控制方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 102209 Beijing, Beiqijia, the future of science and technology in the south area of China electronic network security and information technology industry base C building, Applicant after: Beijing CEC Huada Electronic Design Co., Ltd. Address before: 100102 Beijing City, Chaoyang District Lize two Road No. 2, Wangjing science and Technology Park A block five layer Applicant before: Beijing CEC Huada Electronic Design Co., Ltd. |
|
COR | Change of bibliographic data | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140709 |
|
WD01 | Invention patent application deemed withdrawn after publication |