每个JVM的GC机制都不太一样!如果你只是作应用,就可以不深究,反正是和JVM的实现有关,也有一些文章有介绍的,你可以查查资料!对不起,我帮不了你

解决方案 »

  1.   

    好吧……我现在只想知道最基本的概念:一个对象的reference到底是存放在哪里?
    是否这样:如果该reference是另一个对象A的数据成员,那么就存放在A所存在的heap空间中,如果该reference不是别的任何一个对象的数据成员,那么就存在于stack中?
    小弟的概念有些混乱,希望大家指点,谢谢了!
      

  2.   

    很多JVM是不用(至少是不完全用)引用计数来跟踪对象的使用情况的,因为效率的原因
    不过COM是这样的,也存在循环引用的问题, COM Essential里提到过,我不及得了
      

  3.   

    To sunni:
      两种情况的reference都在栈里?还是只有不属于另一个对象的数据成员的reference才在栈里?那么属于数据成员的reference呢?
      

  4.   


    其实是相当于C,地址放在stack里,内容放在heap里。在java中,当没地址指向heap里的内容时,就自动回收内存。但回收的时间要看平台的,应为和线程调度相关
      

  5.   

    一个main(String[] args)被看成是一个root,然后从root衍生出去,所有从root开始可以找到的都被认为是正在使用的,而另外的都被看成垃圾,JVM使用的是Mark-Sweap技术,也就是先找一遍,看哪些是需要清除的,然后做上标记,全部找完之后,再做清除工作。
      

  6.   

    you can find some book about jvm on www.bestdown.com