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。
永久代已被删除。 PermSize
和 MaxPermSize
将被忽略,如果它们出现在命令行中,则会发出警告。
【讨论】:
这只是间接回答了这个问题......答案是“删除标志以删除警告”。正如@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的解决办