常量的存在与回收

猪小烧 2007-06-17 07:00:53
例如
String str = "string";

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

如何回收呢?

...全文
260 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_pla 2007-06-18
  • 打赏
  • 举报
回复
常量是不会被vm回收的,只有在vm退出时交给os回收
tdy1234 2007-06-18
  • 打赏
  • 举报
回复
你这个问题的实质是这样的 String str = (new String)"string";
java 中间仍和变量都是引用存储在栈中。而后面的"string";存储在动态内存中间。java有一个垃圾回收机制,当没有任何引用指向这个“string”时,垃圾回收会将这一块内存释放。这个市自动触发执行的。如果对于static关键字定义下的常量要进行回收那么就要自己写回收函数了。
大概就是这样
「已注销」 2007-06-18
  • 打赏
  • 举报
回复
常量是编译之后就定下来的
至于读取文件的时候,通过readLine()读进来的,不是常量
joejoe1991 2007-06-18
  • 打赏
  • 举报
回复
学习。。 汗 常量不回收 那读取文件的时候 不就生成了N多垃圾String实例了么
「已注销」 2007-06-18
  • 打赏
  • 举报
回复
常量不回收
除非你的程序退出才会回收
ngqzmjmj 2007-06-18
  • 打赏
  • 举报
回复
既然是常量当然就不回收了,
zhuyf333 2007-06-18
  • 打赏
  • 举报
回复
当str不再指向“string”,而且没有其他引用指向“string”时,“string”就成为垃圾,之后
java虚拟机会在适当的时候回收这块空间(也许在需要内存的时候,不确定)
shuhang1106 2007-06-18
  • 打赏
  • 举报
回复
当,str=null或不在指向“string”,而且没有其他引用指向“string”时,“string”就成为垃圾,当java虚拟机启动时就会将其回收,释放内存
xiaxinhuo 2007-06-18
  • 打赏
  • 举报
回复
java自动回收 就是它的gc功能.
hyylcz3 2007-06-17
  • 打赏
  • 举报
回复
没用的时候JVM自动收回,
也可以调用 System.gc();

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧