首页 | 手机 | 笔记本 | 电脑硬件 | MP3 | 数码相机 | DV | 品牌机 | 办公 | 网络 | 服务器 | 投影机 | 新闻 | 游戏 | 学院 | 下载
全面分析Java的垃圾回收机制
2006-2-11 23:05:00 文/ 出处:eNet论坛

  上面这个程序创建了许多Chair对象,而且在垃圾收集器开始运行后的某些时候,程序会停止创建Chair。由于垃圾收集器可能在任何时间运行,所以我们不能准确知道它在何时启动。因此,程序用一个名为gcrun的标记来指出垃圾收集器是否已经开始运行。利用第二个标记f,Chair可告诉main()它应停止对象的生成。这两个标记都是在finalize()内部设置的,它调用于垃圾收集期间。另两个static变量--created以及finalized--分别用于跟踪已创建的对象数量以及垃圾收集器已进行完收尾工作的对象数量。最后,每个Chair都有它自己的(非static)int i,所以能跟踪了解它具体的编号是多少。编号为47的Chair进行完收尾工作后,标记会设为true,最终结束Chair对象的创建过程。

  关于垃圾收集的几点补充

  经过上述的说明,可以发现垃圾回收有以下的几个特点:

  (1)垃圾收集发生的不可预知性:由于实现了不同的垃圾收集算法和采用了不同的收集机制,所以它有可能是定时发生,有可能是当出现系统空闲CPU资源时发生,也有可能是和原始的垃圾收集一样,等到内存消耗出现极限时发生,这与垃圾收集器的选择和具体的设置都有关系。

  (2)垃圾收集的精确性:主要包括2 个方面:(a)垃圾收集器能够精确标记活着的对象;(b)垃圾收集器能够精确地定位对象之间的引用关系。前者是完全地回收所有废弃对象的前提,否则就可能造成内存泄漏。而后者则是实现归并和复制等算法的必要条件。所有不可达对象都能够可靠地得到回收,所有对象都能够重新分配,允许对象的复制和对象内存的缩并,这样就有效地防止内存的支离破碎。

  (3)现在有许多种不同的垃圾收集器,每种有其算法且其表现各异,既有当垃圾收集开始时就停止应用程序的运行,又有当垃圾收集开始时也允许应用程序的线程运行,还有在同一时间垃圾收集多线程运行。

  (4)垃圾收集的实现和具体的JVM 以及JVM的内存模型有非常紧密的关系。不同的JVM 可能采用不同的垃圾收集,而JVM 的内存模型决定着该JVM可以采用哪些类型垃圾收集。现在,HotSpot 系列JVM中的内存系统都采用先进的面向对象的框架设计,这使得该系列JVM都可以采用最先进的垃圾收集。

  (5)随着技术的发展,现代垃圾收集技术提供许多可选的垃圾收集器,而且在配置每种收集器的时候又可以设置不同的参数,这就使得根据不同的应用环境获得最优的应用性能成为可能。

  针对以上特点,我们在使用的时候要注意:

  (1)不要试图去假定垃圾收集发生的时间,这一切都是未知的。比如,方法中的一个临时对象在方法调用完毕后就变成了无用对象,这个时候它的内存就可以被释放。

  (2)Java中提供了一些和垃圾收集打交道的类,而且提供了一种强行执行垃圾收集的方法--调用System.gc(),但这同样是个不确定的方法。Java 中并不保证每次调用该方法就一定能够启动垃圾收集,它只不过会向JVM发出这样一个申请,到底是否真正执行垃圾收集,一切都是个未知数。

  (3)挑选适合自己的垃圾收集器。一般来说,如果系统没有特殊和苛刻的性能要求,可以采用JVM的缺省选项。否则可以考虑使用有针对性的垃圾收集器,比如增量收集器就比较适合实时性要求较高的系统之中。系统具有较高的配置,有比较多的闲置资源,可以考虑使用并行标记/清除收集器。

  (4)关键的也是难把握的问题是内存泄漏。良好的编程习惯和严谨的编程态度永远是最重要的,不要让自己的一个小错误导致内存出现大漏洞。

  (5)尽早释放无用对象的引用。大多数程序员在使用临时变量的时候,都是让引用变量在退出活动域(scope)后,自动设置为null,暗示垃圾收集器来收集该对象,还必须注意该引用的对象是否被监听,如果有,则要去掉监听器,然后再赋空值。

  结束语

  一般来说,Java开发人员可以不重视JVM中堆内存的分配和垃圾处理收集,但是,充分理解Java的这一特性可以让我们更有效地利用资源。同时要注意finalize()方法是Java的缺省机制,有时为确保对象资源的明确释放,可以编写自己的finalize方法。




[第一页] [上一页] 1 2 3 [最后一页]
-
相关文章
-

更多相关:
在百度中更多内容:

- -
精彩推荐
IT产品热门报价
 手机 更多>>
 笔记本 更多>>
 数码产品 更多>>
 电脑硬件 更多>>
·注册淘宝会员购买便宜数码
IT世界下载频道 装机常用软件包  
诺基亚滑盖6268评测
索尼推出VGN F系列笔记本
victor入耳式耳机FX77
5K出头入门游戏攒机方案
·诺基亚 7610
·索尼爱立信 K750c
·摩托罗拉 E398
·索尼 VGN-Y18C
·戴尔 Insprion 2200
·明基 Joybook S52-101
·佳能 PowerShot A510
·索尼 DSC-T7
·索尼 DSC-T5 HOT
·佳能 PowerShot A610
·佳能 PowerShot A520
·联想 家悦C1066E
·腾讯QQ2006贺岁版
·霍元甲-李连杰 HOT
·光芒 张靓颖
·武林外传
·魔法飞球pangya
·英雄online
·腾讯TM2006新春版
·QQ珊瑚虫增强包V4.1.2
·高达SEED Destiny最终篇
·IT世界极速下载器 HOT
·Skype简体中文版
·完美卸载 2006
人物 男孩 女孩 白领 明星 杂志 部落 PARTY  
第21期数字男孩西西
第22期数字男孩寂夜
第26期数字女孩杨颖
第27期数字女孩Nicole
·诺基亚手机常用技巧完全手册
·摄影精品:中国最美的十大瀑布
·05年台湾电子营收五哥排名落定
·个人网站的五个发展阶段!
·老鸟谈数码相机,你会选择谁?
·办公族防衰老锦囊 懒人清理术
·日出日落拍摄技巧之三好法则
·真实拍摄假尼姑的变身术(图)
·女人故事:一个肯背你上楼的男人
·成都第一美女 回头率1000%辣妹
·钟丽缇大扮妖妇 FIFA小姐写真
·女人最消魂部位 让你放弃抵抗

重点推荐:手机 | 笔记本 | MP4 | 数码摄像机 | 电脑硬件 | 显示器 | 投影机 | 服务器 | 游戏 | 数码相机 | 诺基亚 | 摩托罗拉 | 三星 | 索尼爱立信 | 联想 | 戴尔
关于我们 - 联系方式 - 频道共建 - 招聘信息 - 网站大事记 - 网站地图 - 广告服务 - 我要投稿 - 颐高集团 - 编辑部的故事 - 报案中心
IT.com.cn 力倡IT文化,崇尚互联共享,欢迎各种媒体转载我们的原创作品[转载请注明出处]。
客服热线:020-61081800 EMAIL:webmaster@it.com.cn 经营许可证编号:浙B2-20040150
带宽支持:佛山电信 服务器支持:五舟
关注IT,关注IT.com.cn,请向你的5个QQ好友宣传IT.com.cn,多谢支持!
 [设为首页]


做中国最好的IT网站