【问题标题】:Deallocation of String type of an object as it resides in String Pool对象的字符串类型的释放,因为它驻留在字符串池中
【发布时间】:2010-01-19 15:39:40
【问题描述】:

我们知道,对于任何其他对象,GC 都会处理释放问题。但是驻留在字符串池中的字符串对象会发生什么。谁将决定解除分配,谁实际执行?因为我们知道即使在取消引用之后仍然存在 String 字面量。

【问题讨论】:

    标签: java string


    【解决方案1】:

    您不再持有引用的字符串可以被垃圾收集,因为字符串池很可能使用弱引用,这是对可以被垃圾收集的对象的引用,并且是发明的正是为了这个目的(缓存等)。

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

    【讨论】:

      【解决方案2】:

      字符串池位于 perm 空间中。它将是garbage collected like every other generation

      如果您运行code like in this example,它将在垃圾回收开始之前填满永久空间。只要internalized strings 可以被垃圾回收,您就不会看到OutOfMemoryErrors。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-09
        • 1970-01-01
        • 2011-07-01
        • 1970-01-01
        • 2010-09-27
        • 2013-06-12
        • 2015-05-04
        • 2013-07-03
        相关资源
        最近更新 更多