在 JDK1.7之前,HotSpot 使用永久代实现方法区;HotSpot 使用 GC 分代实现方法区带来了很大便利;
从 JDK1.7 开始 HotSpot 开始移除永久代。其中符号引用(Symbols)被移动到 Native Heap中,字符串常量和类引用被移动到 Java Heap中。
在 JDK1.8 中,永久代已完全被元空间(Meatspace)所取代。 元空间的本质和永久代类似,都是对JVM规范中方法区的实现 。不过元空间与永久代之间最大的区别在于: 元空间并不在虚拟机中,而是使用本地内存 。因此, 默认情况下,元空间的大小仅受本地内存限制 。