相关疑难解决方法(0)

什么时候字符串在java中被垃圾收集

在Java中,当一个对象没有实时引用时,它有资格进行垃圾回收.现在在字符串的情况下,情况并非如此,因为字符串将进入字符串池,JVM将使对象保持活动状态以便重用.这意味着一旦创建的字符串"永远不会"被垃圾收集?

java string garbage-collection

59
推荐指数
2
解决办法
3万
查看次数

在Java中是永久生成的空间垃圾收集?

我已经读过Perm gen(或Permanent Generation)空间不是垃圾收集的.但是,在CMS集合中,我可以在GC日志中看到一些类正在卸载.那么在完全收集或CMS收集期间收集的perm gen垃圾是什么?

java garbage-collection

35
推荐指数
2
解决办法
3万
查看次数

字符串文字的垃圾收集

我正在阅读垃圾收集,当我搜索字符串文字垃圾收集时,我的搜索结果令人困惑.

我需要澄清以下几点:

  1. 如果在编译时将字符串定义为文字[例如:String str = "java"]那么它是否会被垃圾收集?

  2. 如果使用实习方法[例如:String str = new String("java").intern()]那么它会被垃圾收集吗?它也将与第1点中的字符串文字区别对待.

  3. 有些地方提到只有在String卸载类时才会对文字进行垃圾收集?它是否有意义,因为我认为String不会卸载课程.

java string garbage-collection

21
推荐指数
2
解决办法
1万
查看次数

实习字符串,字符串池和perm空间上的垃圾收集

在探索了java的字符串内部结构后,我对所谓的"烫发空间"感到困惑.我最初的理解是它保留了String 文字以及类元数据,如本问题所述.

我还阅读了有关该String.intern()方法的内容,并将其String放入String Pool中,返回对它的唯一实例的引用.我的理解是,这是与JVM的perm空间中存在的字符串文字相同的字符串池.对我来说,"烫发空间"可以修改是不可能的(毕竟它是永久性的,是吗?).但后来我发现这个问题,EJP对接受的答案的最高投票评论解释了这一点

现在,实习生的字符串已经可以用GC了.

暗示GC在perm空间上运行,这似乎不是永久性的.这如何调和?GC是否检查了烫发空间中的所有内容?GC是否检查字符串池中的所有内容,包括源中的字符串文字?内联字符串是否有第二个字符串池?GC是否只知道在收集时查看实习生的字符串?或者这个评论是错误的并且实际上是一个字符串阻止它成为GC'd(我希望不是这种情况)?

java string garbage-collection jvm string-interning

7
推荐指数
1
解决办法
2778
查看次数

标签 统计

garbage-collection ×4

java ×4

string ×3

jvm ×1

string-interning ×1