在JDK 8中删除PermGen
我已经安装了JDK 8并尝试运行Eclipse。 我收到以下警告消息:
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512m;
support was removed in 8.0
忽略这个论点的原因是什么?
这是Java 8的新功能之一,是JDK增强建议122的一部分:
从热点JVM中删除永久代,因此需要调整永久代的大小。
将包含在Java 8中的所有JEP的列表可以在JDK8里程碑页面上找到。
忽略这些争论的原因是永久代在JDK8的HotSpot中被删除,因为有以下缺点
永久一代(PermGen)空间已经完全被删除,并被一种称为Metaspace的新空间所取代。 PermGen删除的后果很明显, PermSize和MaxPermSize JVM参数被忽略 ,您将永远不会得到java.lang.OutOfMemoryError:PermGen错误。
MetaSpace的优势
元空间调整
可以使用-XX:MaxMetaspaceSize标志设置最大元数据空间大小,默认值为无限制,这意味着只有您的系统内存是限制。 -XX:MetaspaceSize调整标志定义元组空间的初始大小如果不指定此标志,则Metaspace将根据运行时的应用程序需求动态调整大小。
更改将来会启用其他优化和功能
GC性能也有所提高。 更多详情
永久代(PermGen)空间已被完全删除,并被一个名为Metaspace的新空间所取代。PermGen删除的后果显然是PermSize和MaxPermSize JVM参数被忽略,您将永远不会得到java.lang.OutOfMemoryError
:PermGen错误。 JDK 8 HotSpot JVM现在使用本地内存来表示类元数据,并称为Metaspace。 阅读更多>>
上一篇: PermGen elimination in JDK 8
下一篇: Why we have only two data structure "stack" and "heap"?