一叶笑天
雄关漫道真如铁, 而今迈步从头越。 从头越, 苍山如海, 残阳如血。
posts - 73,comments - 7,trackbacks - 0
1.Java中无用的对象由垃圾回收器自动完成。
2.Java的垃圾回收器机制是通过一个后台系统级线程对内存分配情况进行跟踪,对程序员是透明的,而且他是在程序运行期间发生的。在JVM的空闲处理中,垃圾收集线程将检查和释放不再使用的内存。垃圾收集过程在java程序的生存周期中是自动的,不需要分配和释放内存,也避免了内存泄漏。(注:在eclipse中经常出现假死机状态,是不是就是垃圾回收器搞得鬼,我觉得垃圾回收器在使用上不是透明的,应该让程序自己管理。)
3.程序员无法强制调用垃圾回收器明确指定对象,但可以通过将欲废弃的对象赋予null来通知垃圾回收器回收废弃对象。至于何时回收,将由JVM决定。程序不能干预。
4.垃圾回收器不能完全避免内存泄漏。因为程序中存在垃圾回收器无法回收的的持续存在的无用对象。当不再使用一个对象时,最好明确该对象为null,这种动作不能控制回收器立即回收,只是通知可以回收。当然,如果系统内存中可用内存低,系统也会自动运行垃圾回收器来释放废弃对象占用的内存资源。
5.程序可以使用System.gc()和Runtime.getRuntime().gc()来通知垃圾回收器,这两种方法的调用不会强制垃圾回收器立即执行,而是一种建议,通知性而非强制性要求。希望垃圾回收器来回收已经废弃的对象,以便释放占据的资源供其他对象使用。
6.在对象能够被垃圾回收器回收钱,其必须符合回收条件。当一个对象没有任何活的线程能够到达时,该对象就符合垃圾回收器回收的条件了。
7.不同的Java虚拟机实现具有不同的垃圾回收机制,也就是不同的垃圾回收算法。
8.定义在Object上的finalize()方法,用于当垃圾回收器确定不存在对对象的更多引用时,由对象的垃圾回收器调用此方法。JVM不保证调用某个给定对象的finalize()方法,因此finalize()方法可能从不运行。对于任何给定的对象,Java虚拟机最多只调用一次finalize()方法。
9.子类可以重载finalize(),以配置系统资源或执行其他清除。但由于JVM不能保证finalize()方法一定获得调用,因此重载finalize()方法内的代码不能保证一定被执行。
posted on 2008-06-14 17:37 一叶笑天 阅读(167) 评论(0)  编辑  收藏 所属分类: JAVA技术

只有注册用户登录后才能发表评论。


网站导航: