目前我好象有必要知道。

解决方案 »

  1.   

    钻到jvm里面去看看,找个问题我也想知道 一直不知道 请高手解答
      

  2.   

    不知道,期待回不回收是JVM决定的
      

  3.   

    深入java虚拟机,但是这个东西sun没开源,很难搞懂吧
      

  4.   

        用finalize()方法可以知道,它被声明为protected,finalize()会在对象被回收时执行,,但是不能将它当作析构函数使用,因为不知道对象资源何时被回收,所以也就不知道finalize() 真正被执行的时间,也就无法立即执行所指定的资源回收动作。
        但是可以使用finalize()来进行一些相关资源的清楚动作。范例public class Gctext{
       private String name;   public Gctest(String name) {
          this.name = name;
          System.out.println(name + "建立");   }   //对象回收前执行
       protected void finalize(){
          System.out.println(name + "被回收");
       }
    }//做个简单的执行测试
    public class UseGc{
       public static void main(String[] args){
          System.out.println("请按Ctrl + c终止程序")      GcTest obj1 = new GcTest("Object1");
          GcTest obj2 = new GcTest("Object2");
          GcTest obj3 = new GcTest("Object3");
        
    //命令名称不参考至对象
          obj1 = null;
          obj2 = null;
          obj3 = null;//建议回收对象
          System.gc();      while(true);//不断执行程序
       }
    }程序结果如下
    请按Ctrl + c 终止程序
    bject1 建立
    bject2 建立
    bject3 建立
    bject3 被回收
    bject2 被回收
    bject1 被回收
    (楼主可以试试finalize()的这个方法去检验一下引用的对象是否已经被回收)
      

  5.   

    在命令行中用命令:java -verbosegc 类名
      

  6.   

    java -verbosegc :::
    这个能看出什么。