Java HotSpot(TM)64位服务器VM警告:忽略选项MaxPermSize

Bor*_*ris 128 java maven

使用Maven构建Java 8项目时:

mvn clean package
Run Code Online (Sandbox Code Playgroud)

我收到这条消息:

Java HotSpot(TM)64位服务器VM警告:忽略选项MaxPermSize = 128m; 支持在8.0中删除

如何删除此邮件?

Bor*_*ris 155

JDK 8兼容性指南说,在Java 8中,命令行标志MaxPermSize已被删除.原因是永久生成已从热点堆中删除并被移动到本机内存.因此,为了删除此消息,请编辑MAVEN_OPTS环境用户变量:

Java 7

MAVEN_OPTS -Xmx512m -XX:MaxPermSize=128m
Run Code Online (Sandbox Code Playgroud)

Java 8

MAVEN_OPTS -Xmx512m
Run Code Online (Sandbox Code Playgroud)

  • 原因是Oracle的JRE 8,AFAIK中已经删除了整个PermGen空间. (13认同)
  • 如果有人不知道如何执行此操作 - `sudo gedit ~/.profile`,请添加答案中的行并保存文件。 (2认同)

Mar*_*ler 19

JDK 8 HotSpot JVM现在使用本机内存来表示类元数据,称为Metaspace.

永久世代已被删除.将忽略PermSize和MaxPermSize,并且如果命令行中存在警告,则会发出警告.


小智 7

In JBoss EAP 6.4, right click on the server and open launch configuration under VM argument you will find

{-Dprogram.name=JBossTools: jboss-eap" -server -Xms1024m -Xmx1024m -XX:MaxPermSize=256m}
Run Code Online (Sandbox Code Playgroud)

update it to

{-Dprogram.name=JBossTools: JBoss 6.4" -server -Xms512m -Xmx512m}
Run Code Online (Sandbox Code Playgroud)

this will solve your problem.


小智 7

-XX:MaxPermSize = size设置最大永久生成空间大小(以字节为单位)。此选项在JDK 8中已弃用,并由-XX:MaxMetaspaceSize选项取代。

-XX:PermSize =大小设置分配给永久生成的空间(以字节为单位),如果该空间超出则触发垃圾回收。此选项在JDK 8中已弃用,并已由-XX:MetaspaceSize选项取代。

  • 我认为这是不恰当的,因为这意味着您应该将以前使用的MaxPermGen和MaxMetaSpaceSize切换为误导性的,因为它们的作用实际上已经颠倒了。在Java 8类元数据空间驻留在PermGen之前,该空间受到32 / 64MB的限制,并且使用“ MaxPerGen”来“增加”它。但是从Java 8开始,PermGen不再可用,并且类元数据空间是无限的,因此实际上使用了“ MaxMetaspace”大小来“减小”它。有关更多信息,请参见:http://stackoverflow.com/a/31463972/67824 (11认同)