使用Maven构建Java 8项目时:
mvn clean package
我收到此消息:
Java HotSpot(TM)64位服务器VM警告:忽略选项MaxPermSize = 128m;在8.0中删除了支持
如何删除此消息?
使用Maven构建Java 8项目时:
mvn clean package
我收到此消息:
Java HotSpot(TM)64位服务器VM警告:忽略选项MaxPermSize = 128m;在8.0中删除了支持
如何删除此消息?
Answers:
JDK 8兼容性指南指出,在Java 8中,命令行标志MaxPermSize
已被删除。原因是永久代已从热点堆中删除,并已移至本机内存。因此,为了删除此消息,请编辑MAVEN_OPTS环境用户变量:
Java 7
MAVEN_OPTS -Xmx512m -XX:MaxPermSize=128m
Java 8
MAVEN_OPTS -Xmx512m
sudo gedit ~/.profile
,请从答案中添加一行并保存文件。
sudo
编辑主文件夹中的文件?对我来说似乎很奇怪。
的JDK 8的HotSpot JVM现在使用本地存储器,用于类的元数据的表示,被称为元空间。
永久一代已被删除。该PermSize
和 MaxPermSize
被忽略,如果它们存在的命令行上发出警告。
-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
在具有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"
问题解决了
万一有人仍然收到这种消息。发生这种情况是因为在运行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>
请解决这个问题,我们只是在其中设置了安装的JDK路径
standalone.conf
JBoss \ Wildfly Server 的bin文件夹下的文件。为了解决这个问题,我们执行以下步骤:
对于Eclipse用户...
单击运行->运行配置->是->将备用JRE设置为1.6或1.7