引用this页面:
这里有多少个对象符合GC条件?
String s = "hello"; Character ch1 = 1; Character ch2 = 1; ch1 = null; s = null;
我相信答案是1。
我想了解它在Java 6中是如何工作的。
我现在的理解:
字符串将进入池中。后来没有提到它。所以,根据this回答(我不理解关于类加载器的那部分,你能澄清一下吗?),字符串池很可能不会被垃圾收集......
好的,角色。 Java中有this优化,会导致ch1
和ch2
指向同一个对象。所以,这个小角色也会进入一些游泳池。但是,尽管ch1
是null
,我们仍然可以通过1
引用来访问ch2
。
所以,我现在的答案是0。
我的每一步都是对的吗?如果没有,请纠正我。能否请您解释一下它是如何运作的?
答案 0 :(得分:3)
您的答案"没有收集任何内容"是对的,至少只要定义字符串的类就在那里。
"hello"
是一个字符串文字,它出现在引用它的类中。只要该类可以访问,文字就会保留。
课程也可以是GC。但是每个类都引用它的类加载器并由它引用。通常情况下,您不关心类加载器,因为您使用默认类加载器并且它(以及所有类)一直保持到最后。
某些应用程序(例如,Web服务器)需要能够动态地加载和卸载某些代码(例如,servlet)。这就是使用类加载器的地方。