maven 默认堆 space 和 Permgen 大小

maven default heap space and Permgen size

根据this

Once you have installed Maven in your system, the next step is to fine-tune it for optimal performance. By default, the maximum heap allocation is 256 - 512 MB (-Xms256m to -Xmx512m). This default limit does not work while building a large, complex Java project, and it is recommended that you have at least 1024 MB of maximum heap.

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

如果那是真的,那么 maven 为自身设置的 permgen 大小的默认最大、最小值是多少?

我正在使用 Java 7 和 maven 3。

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

此外,您可以将它们设置为 Maven via .mvn/jvm.config 或如您通过 MAVEN_OPTS 提到的那样。

MAVEN_OPTS 和其他东西(例如 JAVA_HOME)也可以通过 .mavenrc 定义,它位于 $HOME/.mavenrc(Linux/Mac ) 或 %USERPROFILE%\mavenrc_pre.bat%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 多个模块的构建,那当然会有影响。