典型的垃圾回收算法是什么?(最好附一段代码)

解决方案 »

  1.   

    你把你的对象设置一个null ,系统自动给你回收了!垃圾回收是从那些没有用的数据开始回收!
      

  2.   

    一般垃圾回收机制用一段小代码演示很困难,因为触发垃圾回收机制必须满足一个对象被申请了但却不使用,并且在内存资源满足条件时系统才会回收,而垃圾回收机制不必自行调用,楼主可以做一个循环,疯狂申请一个对象看看(从一本老外写的J2SE的书上看到的一个演示垃圾回收机制的方法),但不一定能成功,因为机器的配置对JAVA虚拟机运行也有影响,我以前试过一次但没有成功~~
      

  3.   

    List list=new ArrayList();
    String tmpStr="";
    for(int i=0;i<500000;i++)
    {
      tmpStr="aa"+i;
      list.add(tmpStr);
      tmpStr=null;
      if(i%10000==0)
      {
        list=null;
        list=new ArrayList();
      }

    }以上代码中每次循环生成的字符串加入到list中,循环结束时即便添加了绿色部分代码,但由于该引用的内容仍在使用,没有达到游离状态,所以他们不会被垃圾回收。当添加了10000的倍数个字符串时执行了红色代码,将list对象置空,则之前添加的所有字符串对象变成游离状态,可以被垃圾回收。
    楼主可以用JProfiler等性能测试工具实时查看,结果很清晰,也可以手工调用垃圾回收并打印出内存使用状况来查看