[发明专利]一种自适应回收垃圾对象的系统及方法无效
申请号: | 201010227644.6 | 申请日: | 2010-07-14 |
公开(公告)号: | CN101894049A | 公开(公告)日: | 2010-11-24 |
发明(设计)人: | 王文杰;周兴俊;陆刚 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 北京安信方达知识产权代理有限公司 11262 | 代理人: | 李健;龙洪 |
地址: | 518057 广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 自适应 回收 垃圾 对象 系统 方法 | ||
技术领域
本发明涉及JAVA虚拟机领域,尤其涉及一种自适应回收垃圾对象的系统及方法。
背景技术
JAVA是目前使用最广泛的程序设计语言,JAVA由于其跨平台性,有很强的可移植性,得到广大程序员的青睐,JAVA程序广泛应用于服务器、PC、移动终端、嵌入式消费电子产品、智能卡等领域,并正在向更广泛的领域扩展。
JAVA是由传统的面向对象语言C++演进过来,运行于JAVA虚拟机之上,由JAVA虚拟机管理资源和屏蔽平台相关性。对内存的控制和及时释放是一项很复杂的工作,为了将程序员从这项工作中解放出来,JAVA虚拟机建立了垃圾回收机制。
现用的垃圾回收调度算法有:
1系统定时遍历堆中所有对象,判断对象为垃圾就进行回收。这种垃圾回收调度方法不及时,可能在实例化一个对象时,堆空间不够导致为对象分配空间失败,还可能会在CPU繁忙时,到达定时回收时间,还要回收所有垃圾。导致系统更繁忙,程序运行不畅。
2在新创建一个对象时,判断堆空间是否足够,如果不够,马上调度垃圾回收算法,回收所有垃圾。这种调度方式只对JAVA虚拟机堆空间的内存进行管理,不能限制分配在堆外空间的内存。采用这种调度方法会出现堆空间足够,垃圾对象占用较大堆外空间,造成内存资源的浪费。甚至因为内存不够而出现导致系统运行不畅。
3JAVA程序开发人员主动调用JAVA虚拟机提供的垃圾回收接口函数调度垃圾回收。这种办法又恢复到传统编程方式的内存管理方法。其缺点是要预先确定占用的内存空间是否应该被回收,程序员不仅要考虑如何实现算法满足应用,还要花费很多精力考虑合理利用内存,避免内存泄露。
另外,现有的垃圾回收算法均采用一次调度全部回收的方式进行垃圾回收。垃圾回收算法,涉及到内存碎片整理等,是一项很浪费CPU资源的工作。为了消除传统垃圾回收算法的以上缺点,提高JAVA虚拟机性能。
发明内容
本发明提供一种自适应回收垃圾对象的系统及方法,释放垃圾对象时,释放垃圾对象占用的所有空间,避免了内存空间的浪费。
一种自适应回收垃圾对象的方法,包括:
当系统运行期间,释放JAVA垃圾对象时,同时释放所述对象的堆内空间及对外空间。
进一步地,选择释放的垃圾对象时,先选择占用空间最大的垃圾对象进行释放,若释放后内存空间仍不能满足当前系统运行需要,则进一步选择剩余垃圾对象中占用空间最大的进行释放,直到释放的空间满足当前系统运行需要。
进一步地,选择进行释放的垃圾对象后,根据当前系统运行CPU资源使用状况和回收该垃圾的算法复杂度判断是否回收该垃圾对象,若当前CPU的资源足够释放该垃圾对象时判定可以回收该垃圾对象,否则不可以回收该垃圾对象,并选择其余垃圾对象中占用空间最大的进行释放。
进一步地,所述选择占用空间最大的垃圾对象是指,
(1)当虚拟机之外的进程触发垃圾对象回收时,选择占用堆外空间最大的垃圾对象;
(2)当检测到内存占用量超过系统稳定阀值时释放垃圾对象时,选择占用的堆内及对外空间之和最大的垃圾对象;
(3)当创建新的JAVA对象且因内存不够需要释放垃圾对象时,选择占用堆内空间最大的垃圾对象。
进一步地,当系统运行期间,JAVA虚拟机遍历堆空间中的所有对象,将引用数为0的对象设为垃圾对象,并计算回收所述垃圾对象的复杂粒度;
所述遍历对象是定时遍历,或是需要进行垃圾对象回收时进行遍历。
本发明还提供一种自适应回收垃圾对象的系统,包括释放模块;
所述释放模块,用于释放JAVA垃圾对象时,同时释放所述对象的堆内空间及对外空间。
进一步地,所述系统还包括选择模块,用于选择释放的垃圾对象;
所述选择模块选择释放的垃圾对象时,先选择占用空间最大的垃圾对象进行释放,若释放后内存空间仍不能满足当前系统运行需要,则进一步选择剩余垃圾对象中占用空间最大的进行释放,直到释放的空间满足当前系统运行需要。
进一步地,所述系统还包括判断模块;
所述选择模块还用于将选择的垃圾对象发送至判断模块,以及判断模块判定选择的垃圾对象不可以回收时从其余的垃圾对象中选择占用空间最大的垃圾对象;
所述判断模块,用于根据当前系统运行CPU资源使用状况和回收该垃圾的算法复杂度判断是否回收选择的垃圾对象,若当前CPU的资源足够释放该垃圾对象时判定可以回收该垃圾对象,否则不可以回收该垃圾对象;当判定不可以回收该垃圾对象时通知选择模块重新选择垃圾对象进行回收。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010227644.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:制备黑胡椒油树脂的方法
- 下一篇:一种覆铜用丝芯4J42合金的冷拉生产方法