在jdk 1.7中收集的字符串池垃圾

时间:2017-01-20 13:32:06

标签: java-7

JDK 7之后将在堆上创建字符串池,而不是PermGen。现在我的问题是,是否会收集垃圾?

另外据说String对象总是在堆上创建,String pool保持对这些对象的引用。那么String池如何在内部实现它是否使用任何hashMap或其他东西来缓存引用。

1 个答案:

答案 0 :(得分:0)

你的问题的第二部分在这里得到解答 - How does Java implement String pooling?

  

很抱歉让你失望但是Java String-Pool不是一个真正的Java类,而是在JVM中实现的某个地方,即它被写为C ++代码。如果你看一下String类的源代码(几乎一直都是这样),你会发现intern()方法是原生的。您将不得不通过一些JVM代码来获取更多信息。

     

修改:可在此处找到一些实施(C++ headerC++ implementation)。搜索StringTable。