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

使用 Maven 构建 Java 8 项目时:

mvn clean package

我收到这条消息:

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

如何删除这条消息?

【问题讨论】:

标签: java maven


【解决方案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 大小实际上用于减小它。欲了解更多信息,请参阅:stackoverflow.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 文件夹下的文件。为了解决这个问题,我们执行以下步骤:

      1. 打开JBoss_or_wildfly\bin文件夹下的standlone.conf文件
      2. 在此文件中查找 #JAVA_HOME 文本。
      3. 删除 # 字符并将您安装的 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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-07-29
          • 1970-01-01
          • 2017-07-13
          • 2015-07-28
          • 2018-06-07
          • 2014-09-03
          • 2022-01-07
          相关资源
          最近更新 更多