我已经安装了JDK 8,并试图运行Eclipse。我收到以下警告信息:

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512m;
support was removed in 8.0 

忽略这个VM选项的原因是什么?


当前回答

Oracle的Java 8的JVM实现摆脱了PermGen模型,取而代之的是Metaspace。

其他回答

Oracle的Java 8的JVM实现摆脱了PermGen模型,取而代之的是Metaspace。

因为永久代空间被移除了。内存管理做了一些改变。

java-8-permgen-metaspace

在Java 8中,PermGen空间被MetaSpace取代。PermSize和MaxPermSize JVM参数将被忽略,如果在启动时出现,则会发出警告。

类元数据的大部分分配现在都是从本机内存中分配的。 *用于描述类元数据的类已被删除。

旧的PermGen和新的MetaSpace之间的主要区别是,您不必强制定义内存使用的上限。您可以保持MetaSpace空间限制无限制。因此,当内存使用增加时,你不会得到OutOfMemoryError错误。相反,保留的本机内存增加到完全填满增加的内存使用。

您可以为MetaSpace定义最大空间限制,然后它将抛出OutOfMemoryError:元数据空间。因此,谨慎地定义这个限制是很重要的,这样我们就可以避免内存浪费。

这是Java 8的新特性之一,是JDK增强建议122的一部分:

从Hotspot JVM中删除永久生成,因此需要调优永久生成的大小。

Java 8中包含的所有jep的列表可以在JDK8里程碑页面上找到。

永久生成(PermGen)空间已经完全被移除,并被称为Metaspace的新空间所取代。删除PermGen的结果显然是PermSize和MaxPermSize JVM参数被忽略,你永远不会得到java.lang.OutOfMemoryError: PermGen错误。 JDK 8 HotSpot JVM现在使用本机内存来表示类元数据,称为Metaspace。阅读更多> >