Java卡系统垃圾回收方法

文档序号:6571877阅读:460来源:国知局
专利名称:Java卡系统垃圾回收方法
技术领域
本发明涉及智能卡领域,尤其涉及一种Java卡系统垃圾回收方法。
背景技术
智能卡已经被广泛应用在手机、音乐播放器、数字电视等各 类产品中,智能卡可以实现身份识别、数据的存储、信息处理等 多种功能。以广泛应用于手机中的SIM卡(Subscriber Identity Model,客户识别模块)为例,SIM卡即是一种具有用户识别功 能和数据存储、处理功能的智能卡,它是移动运营商、增值业务 提供商和用户之间的々某介,被广泛地应用于移动通讯领域内。随着第三代移动通信系统(简称3G)的到来,3G运营商将 利用3G网络的带宽优势其客户提供诸如音乐下载、视频服务、 无线宽带接入等新业务,由于传统的普通SIM卡不具有应用程序 (Applet)下载的功能,因此限制了移动运营商和增值业务提供 商的业务开展,而新兴的Java卡技术的出现则解决了这个难题。 Java卡技术是一项新兴的智能卡技术,是一个开放的多应用平 台,通过Java卡可以实现下载各种应用程序,但是,由于Java 卡嵌入式系统的存储空间有限,用户只能通过更新Java卡上的各 种应用程序来解决越来越多的使用需求,随着用户对程序的选择 和更新,将产生许多系统垃圾占用存储空间,使得本来就很有限 的资源被这些系统垃圾更大程度的浪费了。因此,怎样更有效率 的使用Java卡的有限空间是一个需要迫切解决的问题。针对现有技术的上述缺陷,本发明就是要提供一种高效率的 Java卡系统垃圾的回收方法,实现对系统垃圾的清理,将系统垃 圾所占用的空间进行回收,为应用程序的下载提供充足的空间。发明内容本发明的目的是提供一种高效率的Java卡系统垃圾的回收方法。为实现上述发明目的,本发明提供的Java卡系统垃圾的回收 方法包括以下步骤步骤一,由Java卡系统调用系统垃圾回收实现函数;步骤二,在铺垫区中对系统垃圾回收实现函数进行初始化操作;步骤三,由跟踪收集器进行对象遍历,并在位图区中进行标记;步骤四,清除在位图区中仍为初始化值的位所对应的对象。本发明所3是供的Java卡系统垃圾回收方法将Java卡系统中 垃圾占用的空间(即对象遍历过程中无法到达的对象)进行高效 率的整理,使得Java智能卡的有限存储空间得到了更合理的应 用,为应用程序的下载提供充足的空间。为了l吏得本发明Java卡系统垃圾回收方法更加优化,还可 以在执行完步骤四之后由堆碎片管理器进行堆碎片整理。详细的内容将在具体实施例中作更清楚的介绍。


图1是本发明所涉及的Java栈的一种空间管理方式;图2是本发明所述Java卡系统垃圾回收方法的基本流程图;以下结合实施例及其附图作进 一 步的详细说明。
具体实施方式
为清楚描述本发明所述的Java卡系统垃圾回收方法,首先 引入跟踪收集器这个硬件结构。本发明所涉及的Java卡包括跟踪收集器,其完成对象遍历 和对象清除两个过程。在对象遍历阶段,跟踪收集器从根集开始 扫描,沿着整个对象图上的每条链接,递归确定可到达(reachable)的对象,在跟踪过程中遇到的可到达的对象使用一 个独立的位图来设置标记,如果某对象不能从这些根对象的一个(至少一个)到达,则将它作为垃圾收集。以下将详细描述对象 遍历的原理和过禾呈。在上述对象遍历过程中使用了 Java栈,参见图1中揭示了本 发明所涉及的Java栈的一种空间管理方式Java栈的最底层为已 用空间1,已用空间l的上层为可用空间,4巴Java栈可用空间的 基地址作为对象遍历区的基地址,并预留 一段空间作为铺垫区 2,铺垫区2在执行垃圾回收实现函数的初始化时使用;位图区3 位于铺垫区2的上面,位图区3的基地址是对象遍历区的基地址 加上铺垫区大小偏移,位图区3在垃圾回收实现函数进行初始化 时开辟,并且在初始化过程中,将位图区3所有的位的值置为 "0",程序创建的所有对象都在位图区3中对应l位(Bit),每8 位组合为一组。在对象遍历过程中,从根集开始扫描,每到达一 个对象就将它在位图中对应的位(bit)置为"1"。即, 一旦对 应的位被置"1",则表示其属于可以到达的对象。对象遍历采用递归方式,在图l所示的实施例中,递归的深 度为4级(A、 B、 C、 D),当递归超过4级(例如E)但还有 可以到达的对象存在,则将后续的对象添加到对象緩冲区4,对 象緩冲区4的基地址为位图区3的结束地址,对象緩冲区4的大 小为栈指针的偏移减去位图区3结束地址的偏移,当对象递归处理完成并返回后,将调用存放在对象緩冲区4的对象并开始下一 次递归及緩存。在完成对象遍历阶段之后,进入对象清除阶段,在对象清除 阶段,跟踪收集器将那些从根集不可到达的对象(即其在位图区 3中对应的位仍为"0")作为垃圾回收的对象进行删除。即,根 据对象的索引,查看其在位图区3中对应的位,如果值为 "0",则将对象清除,否则不清除。为了使本发明的技术方案更加优化,还可以引入堆碎片管理 器这个硬件结构,堆碎片管理器是将跟踪收集器在对象清除阶段 所释放的对象占用空间进行碎片整理回收。在堆碎片管理器的空 间回收过程中,如果待回收空间不能合并到其他空闲块中,则需 查看EEPROM分配表中是否存在空闲的表项,如果存在空闲的 表项,则将待回收的空间登记到该表项;如果无空闲表项,则创 建一个新的分配表,登记待回收块信息。如果待回收块有相邻空 闲块,则修改相邻空闲的大小(SIZE)字段,对其进行合并。参见图2,图2是根据上述描述所总结出的发明所述Java卡 系统垃圾回收方法的基本流程图,其包括以下几个步骤步骤21,由Java卡系统调用垃圾回收实现函数。在本发明 所述的Java卡系统垃圾回收调用机制中,可以采用设置标记 (TAG)的方法对垃圾回收进行控制,应用开发者设置标记后, 如果需要进行垃圾回收,则首先判断是否存在标记,如果存在标 记,则调用垃圾回收实现函数,进行垃圾回收,否则不进行垃圾 回收。需要强调的是,鉴于智能卡嵌入式软件系统及底层硬件平 台的限制,本发明所述的Java卡的垃圾回收调用机制采用单线程 显式调用的方法,所谓单线程就是当垃圾收集开始时就停止应用 程序的运行,显式调用则意味着应用开发者必须显式的调用垃圾 回收实现函数才可以进行Java卡系统垃圾回收。步骤22,在铺垫区2中对垃圾回收实现函数进行初始化操 作。如上所述,在初始化过程中,将位图区3中的所有位均置为 相同的初始化值(在图1所示的实施例中,初始化值均置为 "0")。步骤23,由跟踪收集器进行对象遍历,并在位图区3中进行 标记,如上所述,在遍历过程中,如果属于能够到达的对象,则 将此对象在位图区3中对应初始值进行改变(在图1所示的实施 例中,将初始值改变并标记成"1")。步骤24,清除在位图区3中仍为初始化值的位所对应的对象。通过上述步骤可见,本发明所述的Java卡系统垃圾回收方 法将Java卡系统中的废弃空间(即对象遍历过程中无法到达的对 象)进行高效率的删除、整理,使得Java智能卡的有限存储空间 得到了更合理的应用,为应用程序的下载提供更充足的空间。当然,为了使得本发明所述Java卡系统垃圾回收方法更加 优化,还可以执行步骤25,由堆碎片管理器进行堆碎片整理。堆 碎片整理的过程已经在上述描述中清楚的体现出来了,在此不作赘述。当然本发明并不限于上述实施例,上述步骤中初始化值并非 一定是"0",可以根据实际情况为其它值。这些都是本领域内 的一般技术人员根据上述描述能够轻易思及的。诸如此类的等效 变换都应该包含在权利要求限定的范围内。
权利要求
1. Java卡系统垃圾回收方法,所述Java卡系统包括跟踪收集器以及Java栈,所述Java栈中包括铺垫区和位图区,所述方法包括以下步骤步骤一,由Java卡系统调用垃圾回收实现函数;步骤二,在铺垫区中对垃圾回收实现函数进行初始化操作;步骤三,由跟踪收集器进行对象遍历,并在位图区中进行标记;步骤四,清除在位图区中仍为初始化值的位所对应的对象。
2、 根据权利要求1所述的Java卡系统垃圾回收方法,其特 征在于所述Java卡系统还包括堆碎片管理器,在执行完步骤四 后,由堆碎片管理器进行堆碎片整理。
3、 根据权利要求1所述的Java卡系统垃圾回收方法,其特 征在于所述步骤一中采用设置标记的方法判断是否需要调用垃圾回收函数。
4、 根据权利要求1所述的Java卡系统垃圾回收方法,其特 征在于在所述步骤二中,将位图区中的所有位均置为相同的初始化值。
5、 根据权利要求4所述的Java卡系统垃圾回收方法,其特 征在于在步骤三所述的遍历过程中,如果属于能够到达的对象,则 将此对象在位图区中对应的初始值进行改变。
6、 根据权利要求5所述的Java卡系统垃圾回收方法,其特 征在于所述相同的初始化值为"0",所述改变后的值为'T'。
7、 根据权利要求1所述的Java卡系统垃圾回收方法,其特 征在于步骤二中所述的对象遍历采用递归方式,递归的深度为4级。
8、 根据权利要求7所述的Java卡系统垃圾回收方法,其特 征在于所述Java栈还包括对象緩冲区,如果递归深度超过4级但还 有可以到达的对象存在,则将后续的对象添加到此对象緩冲区。
9、 根据权利要求8所述的Java卡系统垃圾回收方法,其特 征在于当对象的递归处理完成并返回后,将调用存放在对象緩沖区 的对象并开始下一次递归及緩存。
全文摘要
本发明涉及Java卡系统垃圾回收方法,其包括以下步骤步骤一,由Java卡系统调用垃圾回收实现函数;步骤二,在铺垫区中对垃圾回收实现函数进行初始化操作;步骤三,由跟踪收集器进行对象遍历,并在位图区中进行标记;步骤四,清除在位图区中仍为初始化值的位所对应的对象。本发明所提供的Java卡系统垃圾回收方法将Java卡系统垃圾占用的空间(即对象遍历过程中无法到达的对象)进行高效率整理,使得Java智能卡的有限存储空间得到了更合理的应用,为应用程序的下载提供更充足的空间。
文档编号G06F9/46GK101246440SQ200710026998
公开日2008年8月20日 申请日期2007年2月12日 优先权日2007年2月12日
发明者余世锐, 王礼宇 申请人:东信和平智能卡股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1