Java 当对象驻留在字符串池中时取消分配该对象的字符串类型

Java 当对象驻留在字符串池中时取消分配该对象的字符串类型,java,string,Java,String,我们知道,对于任何其他对象,GC都将负责解除分配。但驻留在字符串池中的字符串对象会发生什么情况呢。谁将决定解除分配,谁实际这样做?因为我们知道,即使在取消引用后,仍会存在字符串文本。可以对不再持有引用的字符串进行垃圾收集,因为字符串池很可能使用弱引用,这些引用是对可以进行垃圾收集的对象的引用,正是为了这个目的而发明的 您可以阅读有关弱引用和的更多信息。字符串池位于perm空间中。会的 如果您运行它,它将在垃圾收集开始之前填满烫发空间。只要可以进行垃圾收集,就不会看到OutOfMemoryErro

我们知道,对于任何其他对象,GC都将负责解除分配。但驻留在字符串池中的字符串对象会发生什么情况呢。谁将决定解除分配,谁实际这样做?因为我们知道,即使在取消引用后,仍会存在字符串文本。

可以对不再持有引用的字符串进行垃圾收集,因为字符串池很可能使用弱引用,这些引用是对可以进行垃圾收集的对象的引用,正是为了这个目的而发明的


您可以阅读有关弱引用和的更多信息。

字符串池位于perm空间中。会的

如果您运行它,它将在垃圾收集开始之前填满烫发空间。只要可以进行垃圾收集,就不会看到OutOfMemoryErrors