可以确定的是:JDK6中,字符串常量池中的对象在方法区(在Perm Space)中;JDK7中,字符串常量池中的对象移到了堆Heap中;
StringTable中保存了这些字符串常量对象的引用,那这个StringTable本身在哪个区,是跟着这些对象一起迁移的吗?
扩展阅读:美团-深入解析String.intern()
StringTable 是 C++ 写的,不在 Java 这几个托管内存里,而是在 C-Heap 里,也就是所谓 Native Memory。
// openjdk/hotspot/src/share/vm/classfile/symbolTable.cpp#730 class StringTable : public Hashtable<oop, mtSymbol> { }
2.1m questions
2.1m answers
62 comments
56.6k users