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

Posted

技术标签:

【中文标题】Java HotSpot(TM) 64 位服务器 VM 警告:忽略选项 MaxPermSize【英文标题】:Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize 【发布时间】:2014-05-03 07:11:32 【问题描述】:

使用 Maven 构建 Java 8 项目时:

mvn clean package

我收到这条消息:

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

如何删除这条消息?

【问题讨论】:

查看bugs.java.com/bugdatabase/view_bug.do?bug_id=6964458了解完整说明 您可能已经运行了一个 IDEA 实例。 [1]:***.com/a/20553943/3741698 【参考方案1】:

Compatibility Guide for JDK 8 表示在 Java 8 中,命令行标志 MaxPermSize 已被删除。原因是永久代被从热点堆中移除并移动到本机内存。 所以为了删除这个消息 编辑 MAVEN_OPTS 环境用户变量:

Java 7

MAVEN_OPTS -Xmx512m -XX:MaxPermSize=128m

Java 8

MAVEN_OPTS -Xmx512m

【讨论】:

而原因是整个 PermGen 空间已在 Oracle 的 JRE 8 AFAIK 中被删除。 如果有人不知道该怎么做 - sudo gedit ~/.profile,请在此处添加答案中的行并保存文件。 我在 ~/.bashrc 文件中设置了这个选项 @gotqn 为什么要sudo 编辑主文件夹中的文件?对我来说似乎是一种很奇怪的做法。【参考方案2】:

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

永久代已被删除。 PermSizeMaxPermSize 将被忽略,如果它们出现在命令行中,则会发出警告。

【讨论】:

这只是间接回答了这个问题......答案是“删除标志以删除警告”。正如@ohad-schneider 的insightful comment 所揭示的那样,没有一个可以替代它们。【参考方案3】:

在 JBoss EAP 6.4 中,右键单击服务器并在 VM 参数下打开启动配置,您会发现

-Dprogram.name=JBossTools: jboss-eap" -server -Xms1024m -Xmx1024m -XX:MaxPermSize=256m

更新到

-Dprogram.name=JBossTools: JBoss 6.4" -server -Xms512m -Xmx512m

这会解决你的问题。

【讨论】:

【参考方案4】:
-XX:MaxPermSize=size

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

-XX:PermSize=size

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

【讨论】:

我认为这被否决了,因为这意味着您应该将以前使用的 MaxPermGen 切换为具有误导性的 MaxMetaSpaceSize,因为它们的角色实际上已经颠倒了。在 Java 8 类元数据空间驻留在 PermGen 之前,受限于 32/64MB,MaxPerGen 被用来增加它。然而,从 Java 8 开始,PermGen 不再存在,并且类元数据空间是无限的,因此 MaxMetaspace 大小实际上用于减小它。欲了解更多信息,请参阅:***.com/a/31463972/67824【参考方案5】:

在使用 Java 8 的 Linux 上运行命令行 mvn(版本 3.3.3)时,我收到了类似的消息。 通过打开maven脚本/$MAVEN-HOME/bin/mvn,发现下面一行

MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

其中 $MAVEN_PROJECTBASEDIR 默认是您的主目录。 所以两个地方你可以看看,第一个是文件 $MAVEN_PROJECTBASEDIR/.mvn/jvm.config 如果它存在的话。其次看文件可能设置了环境变量 MAVEN_OPTS。候选文件是 .bashrc、.bash_profile、.profile 以及它们所包含的文件,例如 /etc/profile、/etc/bash.bashrc

我找到了

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=256m"

在我系统的 .bashrc 中,将其更改为

export MAVEN_OPTS="-Xmx512m"

问题已解决

【讨论】:

【参考方案6】:

请解决这个问题,我们刚刚在

中设置了安装的JDK路径

standalone.conf

JBoss\Wildfly Server bin 文件夹下的文件。为了解决这个问题,我们执行以下步骤:

    打开JBoss_or_wildfly\bin文件夹下的standlone.conf文件 在此文件中查找 #JAVA_HOME 文本。 删除 # 字符并将您安装的 JDK 路径设置为 JAVA_HOME="C:\Program Files\Java\jdk1.8.0_65" 希望这能解决你的问题 谢谢

【讨论】:

原来的问题出在一个maven项目中。和 JBoss 无关。【参考方案7】:

对于 Eclipse 用户...

点击运行——>运行配置——>是——>为1.6或1.7设置Alternate JRE

【讨论】:

【参考方案8】:

万一有人仍然收到这种消息。发生这种情况是因为您在运行 maven 项目时添加了 JVM 参数。因为它与 maven 相关,所以您可以查看您项目中的 pom.xml 文件。

找到这一行<argLine>...</argLine>,在我的项目中我下面也有论据

<argLine>-Xmx1024m -XX:MaxPermSize=512m -XX:+TieredCompilation -XX:TieredStopAtLevel=1</argLine>

您应该将 MaxPermSize 参数替换为 -Xms123m -Xmx123m,因为 MaxPermSize 已被弃用并且不会对您的 JVM 配置产生任何影响:

<argLine>-Xms512m -Xmx512m  -XX:+TieredCompilation -XX:TieredStopAtLevel=1</argLine>

【讨论】:

以上是关于Java HotSpot(TM) 64 位服务器 VM 警告:忽略选项 MaxPermSize的主要内容,如果未能解决你的问题,请参考以下文章

Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file...

错误:Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000fa980000, 59244544, 0)

Linux启动tomcat报错Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000007aaa80000

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

关于Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file: 11043的解决办