根据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。
答案 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多个模块的构建,那么就会产生影响。