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


Answers:


163

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

Java 7

MAVEN_OPTS -Xmx512m -XX:MaxPermSize=128m

Java 8

MAVEN_OPTS -Xmx512m

13
原因是在Oracle的JRE 8 AFAIK中删除了整个PermGen空间。
Puce 2014年

1
如果某人不知道该怎么做- sudo gedit ~/.profile,请从答案中添加一行并保存文件。
gotqn 2015年

我在〜/ .bashrc文件中设置了此选项
paka

@gotqn为什么要sudo编辑主文件夹中的文件?对我来说似乎很奇怪。
Per Lundberg

22

JDK 8的HotSpot JVM现在使用本地存储器,用于类的元数据的表示,被称为元空间

永久一代已被删除。该PermSizeMaxPermSize被忽略,如果它们存在的命令行上发出警告。


这仅间接地回答了问题...答案是“删除标志以删除警告”。正如@ ohad-schneider 的有见地的评论所揭示的那样,没有任何一个替代品可以替代它们。
康尼

10
-XX:MaxPermSize=size

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

-XX:PermSize=size

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


12
我认为这是downvoted,因为这意味着你应该切换先前使用MaxPermGenMaxMetaSpaceSize被误导,因为他们的角色实际上已经逆转。在Java 8类元数据空间驻留在PermGen之前,该空间受到32 / 64MB的限制,并MaxPerGen用于增加空间。但是,从Java 8开始,PermGen不再可用,并且类元数据空间是无限的,因此MaxMetaspace实际上使用大小来减小它。有关更多信息,请参见:stackoverflow.com/a/31463972/67824
Ohad Schneider

8

在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}

这将解决您的问题。


1

在具有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"

问题解决了


1

万一有人仍然收到这种消息。发生这种情况是因为在运行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>

-1

请解决这个问题,我们只是在其中设置了安装的JDK路径

standalone.conf

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

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

最初的问题是在Maven项目中。它与JBoss无关。
鲍里斯(Boris)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.