黑马程序员技术交流社区

标题: Java基础之垃圾回收 [打印本页]

作者: 张周飞    时间: 2014-7-1 10:09
标题: Java基础之垃圾回收
本帖最后由 张周飞 于 2014-7-2 09:26 编辑

  1 /**
2 * 对象在没有任何引用可以到达时,生命周期结束,成为垃圾。
3 * 所有对象在被回收之前都会自动调用finalize()方法。
4 * **************************************************
5 * 一个对象在成为垃圾之后不会被马上回收,
6 * JVM会检测内存中的垃圾堆积到一定程度时才会回收,
7 * 如果我们不想等到这个时候才回收,
8 * 可以使用System.gc()方法来通知虚拟机回收垃圾。
9 * 调用该方法之后JVM会开启新线程做处理垃圾的工作,这需要一定时间。
10  */

public class GcDemo
{
     public static void main(String[] args) throws Exception
{
      for(int i = 0; i < 1000; i ++){
                             new Person();    //创建一个对象之后,没有使用成为垃圾17         
                                             }
     System.out.println("回收之前: " + Person.count);        
      System.gc();    //通知虚拟机进行垃圾回收        
      /*         * 调用System.gc()之后JVM会开启新线程做处理垃圾的工作,需要一定的时间,让其休眠几秒之后,再查看垃圾回收的效果
                * 垃圾多回收需要的时间也会长        */

     Thread.sleep(1000);        
     System.out.println("回收之后: " + Person.count);   
       }
    }
class Person{   //定义一个count来计数,查看回收之前和回收之后   
                         public static int count;   
                         public Person(){
                                 count ++;    //每创建一个对象count加加
                          }    //所有对象在被回收之前都会自动调用finalize()方法
                        public void finalize(){
                                                   count --; //回收一个垃圾减掉一个
                         }
               }


作者: 暗影流光    时间: 2014-7-1 10:17
不错。学习了。
作者: Leung    时间: 2014-7-1 11:03
好!!!!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2