[发明专利]Java虚拟机的垃圾回收移动通信终端及回收方法有效
| 申请号: | 200810056889.X | 申请日: | 2008-01-25 |
| 公开(公告)号: | CN101221535A | 公开(公告)日: | 2008-07-16 |
| 发明(设计)人: | 方震 | 申请(专利权)人: | 中兴通讯股份有限公司 |
| 主分类号: | G06F12/02 | 分类号: | G06F12/02;G06F9/46;H04Q7/32 |
| 代理公司: | 北京律诚同业知识产权代理有限公司 | 代理人: | 梁挥;祁建国 |
| 地址: | 518057广东省深圳市南*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | java 虚拟机 垃圾 回收 移动 通信 终端 方法 | ||
技术领域
本发明涉及虚拟机环境中的内存管理领域,尤其是涉及移动通信终端上运行的Java虚拟机的垃圾回收方法及垃圾回收移动通信终端。
背景技术
Java程序设计语言是由Sun公司推出的跨平台面向对象高级程序设计语言,它的可执行代码是编译以后统一标准的Java字节码(Byte code)。Java语言依赖于称为Java虚拟机(Java virtual machine,JVM)的模拟机。JVM使得程序员不是和系统打交道,而是和虚拟机打交道。因此程序员使用的函数是JVM内嵌的函数,而不是操作系统的函数。这非常先进,因为它提供了可移植性。同时,JVM也非常小,不占用大量的内存。这意味着JVM可以被应用于许多不同的机器。例如,电视机,蜂窝移动电话以及计算机。目前在移动通信终端领域,ARM公司表示,目前它已经供应了2.6亿份用于移动通信终端的ARMJava软件。索爱和诺基亚等手机制造商都已经开发了自己的多任务Jave虚拟机用于手机等移动通信终端领域。JVM是用来同步处理VoIP、3D游戏、音乐下载和播放、电子邮件和即时信息等任务的。
在Java虚拟机中,垃圾回收就是自动释放不再被程序所使用的对象的过程。垃圾回收方法必须能断定哪些对象是不再被引用的,哪些对象是活动的,并且能够把不再被引用的对象所占据的空间释放出来,而不影响活动对象。这些对象中不再被引用的对象称为不可达对象。活动的,被引用的对象称为可达对象。而可达对象和不可达对象又根据其存储内容分为值类型对象和引用类型对象。值类型对象指其存储的是某种类型的值,引用类型对象是指对其它对象的引用(类似C语言中的指针)。同时,传统的垃圾回收方法都是不可调度的,它们并不适合移动通信终端系统。且由于空间的不断分配和回收,必然会形成大量的内存碎片。这些碎片占用了空间且不能够参与分配和回收,这会造成空间浪费现象。虽然碎片的总空间可能足够大,但由于不能参与分配,特别是像在移动通信终端这样内存较小的系统中,碎片会导致虚拟机产生不必要的“内存不足”错误。
JVM的垃圾回收把用户从释放占用内存的重担中解救出来。使用户可以在应用程序开发时不必关心内存回收的各种烦恼问题,从而可以提高开发效率。同时能够帮助程序保持完整性,避免因失误(或故意)错误地释放内存而导致Java虚拟机的崩溃。
现有的专利文献包括:专利申请号为200510061994.9的中国专利申请“支持多进程的Java虚拟机实现方法”和专利号为6070173的美国专利“Methodand Apparatus for Assisting Garbage Collection Process within a JavaVirtual Machine”(一种用于辅助Java虚拟机垃圾回收过程的方法和装置)。
第200510061994.9号中国专利特征如下:一、引入一种支持多进程的Java虚拟机的进程切换方法。二、引入一种支持多进程的Java虚拟机的进程通讯方法。三、引入一种支持多进程的Java虚拟机的内存控制方法。该专利的缺点是提出的支持多进程的Java虚拟机并不适用于像移动通信终端这样的嵌入式设备领域。它的内存控制方法没有相应的垃圾回收方法,仅仅指出一些内存控制结构。
第6070173号美国专利特征如下:一、使用虚拟对象堆和物理对象堆辅助Java虚拟机垃圾回收过程。二、设定虚拟对象堆的阈值,一旦系统对象超过该值就进行垃圾回收。该专利的缺点是虚拟对象堆和物理对象堆并不适用在移动通信终端这类内存较小的设备实现,而且它不能控制垃圾回收时机,只能在系统到达一定的时间点才进行垃圾回收。
发明内容
本发明欲解决的问题在于,提供了一种移动通信终端中Java虚拟机的垃圾回收方法,用于正确区分出系统使用的对象的类型,保证系统运行的准确性。
为了实现上述目的,本发明提供了一种移动通信终端中Java虚拟机的垃圾回收方法,包括:
保存当前线程的上下文环境;
遍历Java虚拟机内存中的所有运行时对象,对可达对象的标志位进行标记,并对可达对象的类型进行记录;
对未标记的对象占用的Java虚拟机内存空间进行合并以及释放;
对可达对象的内存空间进行紧缩处理;
恢复当前线程的上下文环境。
所述对可达对象的类型进行记录的步骤进一步包括:
定义一位图,所述位图中的位对应所述Java虚拟机的内存空间;
对引用类型或者值类型的对象所占据的Java虚拟机的内存空间在位图中的对应位置位。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810056889.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:靶向NCCa-ATP通道的治疗剂及其使用方法
- 下一篇:令牌共享系统和方法





