当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:13:00  来源:本站整理

Java的垃圾回收机制研究[Java编程]

赞助商链接



  本文“Java的垃圾回收机制研究[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

1、谁在做Garbage Collection?

一种风行的说法:在C++里,是系统在做垃圾回收;而在Java里,是Java自身在做.

在C++里,释放内存是手动处理的,要用delete运算符来释放分配的内存.这是风行的说法.切当地说,是利用认为不需求某实体时,就需用delete奉告系统,可以回收这块空间了.这个要求,对编码者来说,是件很麻烦、很难做到的事.随便上哪个BBS,在C/C++版块里老是有一大堆关于内存泄露的话题.

Java采取一种差别的,很便利的办法:Garbage Collection.垃圾回收机制放在JVM里.JVM完好负责垃圾回收事宜,利用只在需求时申请空间,而在丢弃对象时没必要关心空间回收问题.

2、对象在啥时被丢弃?

在C++里,当对象脱离其作用域时,该对象即被利用丢弃.

是对象的生命期不再与其作用域有关,而仅仅与引用有关.

Java的垃圾回收机制普通包含近十种算法.对这些算法中的大都,我们没必要予以关心.只有此中最简单的一个:引用计数法,与编码有关.

一个对象,可以有一个或多个引用变量指向它.当一个对象不再有任何一个引用变量指向它时,这个对象就被利用丢弃了.大概说,这个对象可以被垃圾回收机制回收了.

这就是说,当不存在对某对象的任何引用时,就意味着,利用奉告JVM:我不要这个对象,你可以回收了.

JVM的垃圾回收机制对堆空间做及时检测.当发现某对象的引用计数为0时,就将该对象列入待回收列表中.但是,并非即刻予以销毁.

3、丢弃就被回收?

该对象被认定为没有存在的必要了,那么它所占用的内存便可以被释放.被回收的内存可以用于后续的再分配.

但是,并非对象被丢弃后当即被回收的.JVM进程做空间回收有较大的系统开销.假如每当某利用进程丢弃一个对象,就当即回收它的空间,必将会使整个系统的运转效率非常低下.

前面说过,JVM的垃圾回收机制有多个算法.除了引用计数法是用来判断对象能否已被丢弃外,别的算法是用来肯定什么时刻及若何做回收.JVM的垃圾回收机制要在时间和空间之间做个均衡.

因此,为了提高系统效率,垃圾回收器普通只在满意两个条件时才运行:即有对象要回收且系统需求回收.牢记垃圾回收要占用时间,因此,Java运行时系统只在需求的时刻才利用它.因此你无法知道垃圾回收发生的切确时间.

4、没有引用变量指向的对象有效吗?

前面说了,没挂上引用变量的对象是被利用丢弃的,这意味着,它在堆空间里是个垃圾,随时大概被JVM回收.

不过,这里有个不是例外的例外.关于一次性利用的对象(有些书称之为暂时对象),可以不用引用变量指向它.举个最简单也最常见的例子:

System.out.println(“I am Java!”);

就是成立了一个字符串对象后,直接传送给println()办法.


  以上是“Java的垃圾回收机制研究[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .