A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张周飞 金牌黑马   /  2014-7-1 10:09  /  875 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张周飞 于 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 --; //回收一个垃圾减掉一个
                         }
               }

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

2 个回复

倒序浏览
不错。学习了。
回复 使用道具 举报
好!!!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马