日期:2014-05-20  浏览次数:20759 次

常量的存在与回收
例如
String   str   =   "string ";

对于这个常量,是什么时候java会回收他呢?

如何回收呢?



------解决方案--------------------
没用的时候JVM自动收回,
也可以调用 System.gc();
------解决方案--------------------
java自动回收 就是它的gc功能.
------解决方案--------------------
当,str=null或不在指向“string”,而且没有其他引用指向“string”时,“string”就成为垃圾,当java虚拟机启动时就会将其回收,释放内存
------解决方案--------------------
当str不再指向“string”,而且没有其他引用指向“string”时,“string”就成为垃圾,之后
java虚拟机会在适当的时候回收这块空间(也许在需要内存的时候,不确定)

------解决方案--------------------
既然是常量当然就不回收了,
------解决方案--------------------
常量不回收
除非你的程序退出才会回收
------解决方案--------------------
学习。。 汗 常量不回收 那读取文件的时候 不就生成了N多垃圾String实例了么
------解决方案--------------------
常量是编译之后就定下来的
至于读取文件的时候,通过readLine()读进来的,不是常量
------解决方案--------------------
你这个问题的实质是这样的 String str = (new String) "string ";
java 中间仍和变量都是引用存储在栈中。而后面的 "string ";存储在动态内存中间。java有一个垃圾回收机制,当没有任何引用指向这个“string”时,垃圾回收会将这一块内存释放。这个市自动触发执行的。如果对于static关键字定义下的常量要进行回收那么就要自己写回收函数了。
大概就是这样
------解决方案--------------------
常量是不会被vm回收的,只有在vm退出时交给os回收