Maven默认堆空间和Permgen大小

时间:2019-03-26 17:42:45

标签: java maven maven-3

根据this

  

在系统中安装Maven后,下一步是   微调以获得最佳性能。默认情况下,最大堆   分配为256-512 MB(-Xms256m至-Xmx512m)。此默认限制   在构建大型,复杂的Java项目时不起作用,它是   建议您至少有1024 MB的最大堆。

现在,我认为堆空间和permgen空间的最大和最小值是由JVM设置的。 Maven只能通过我们设置的MAVEN_OPTS env变量来设置它们。那么,这些值在哪里由maven设置为默认值?

如果是这样,那么maven为自身设置的permgen大小的默认max,min是什么?

我正在使用Java 7和Maven 3。

1 个答案:

答案 0 :(得分:1)

首先,堆空间等由您正确提到的JVM设置。

此外,您可以将它们设置为Maven via .mvn/jvm.config或如前所述通过MAVEN_OPTS进行设置。

还可以通过MAVEN_OPTS(Linux / Mac)或.mavenrc中的$HOME/.mavenrc来定义%USERPROFILE%\mavenrc_pre.bat和其他内容(例如JAVA_HOME),或者%USERPROFILE%\mavenrc_pre.cmd(Windows):

因此.mavenrc文件可以包含:

export JAVA_HOME=.../jdk-11.0.1.jdk
export MAVEN_OPTS="-Djava.awt.headless=true -Xmx2g"

或另一种选择是使用jvm.config(位于.mvn目录中的项目内)文件,该文件可能包含:

-Xmx2048m -Xms1024m -XX:MaxPermSize=512m -Djava.awt.headless=true

Maven没有定义默认值。默认值为JVM定义的值。

对于Java 7,我建议不要更改PermGen,因为如果您将其部署到Tomcat或实际应用程序服务器等servlet容器中,通常需要这样做。

此外,我只想简单说一句书中的名言。只需从默认值开始即可。如果我们在谈论性​​能,您应该真正检查问题是否真的是我通常怀疑的内存。当然,如果我们谈论的是在一个多模块构建中包含100多个模块的构建,那么就会产生影响。