例如
String str = "string";对于这个常量,是什么时候java会回收他呢?如何回收呢?

解决方案 »

  1.   

    没用的时候JVM自动收回,
    也可以调用 System.gc();
      

  2.   

    java自动回收 就是它的gc功能.
      

  3.   

    当,str=null或不在指向“string”,而且没有其他引用指向“string”时,“string”就成为垃圾,当java虚拟机启动时就会将其回收,释放内存
      

  4.   

    当str不再指向“string”,而且没有其他引用指向“string”时,“string”就成为垃圾,之后
    java虚拟机会在适当的时候回收这块空间(也许在需要内存的时候,不确定)
      

  5.   

    学习。。 汗 常量不回收 那读取文件的时候  不就生成了N多垃圾String实例了么
      

  6.   

    常量是编译之后就定下来的
    至于读取文件的时候,通过readLine()读进来的,不是常量
      

  7.   

    你这个问题的实质是这样的 String str = (new String)"string";
    java 中间仍和变量都是引用存储在栈中。而后面的"string";存储在动态内存中间。java有一个垃圾回收机制,当没有任何引用指向这个“string”时,垃圾回收会将这一块内存释放。这个市自动触发执行的。如果对于static关键字定义下的常量要进行回收那么就要自己写回收函数了。
    大概就是这样
      

  8.   

    常量是不会被vm回收的,只有在vm退出时交给os回收