首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >maven默认堆空间和Permgen大小

maven默认堆空间和Permgen大小
EN

Stack Overflow用户
提问于 2019-03-26 17:42:44
回答 1查看 567关注 0票数 0

根据的说法:

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

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

如果是这样的话,默认的max是多少,最小值是多少?

我正在学习Java 7和maven 3。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-26 19:40:56

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

此外,您还可以为.mvn/jvm.config设置它们,也可以像前面提到的通过MAVEN_OPTS来设置它们。

MAVEN_OPTS和其他东西(例如JAVA_HOME)也可以通过位于$HOME/.mavenrc(Linux/Mac)或%USERPROFILE%\mavenrc_pre.bat%USERPROFILE%\mavenrc_pre.cmd (%USERPROFILE%\mavenrc_pre.cmd)中的.mavenrc来定义:

因此,.mavenrc文件可以包含:

代码语言:javascript
复制
export JAVA_HOME=.../jdk-11.0.1.jdk
export MAVEN_OPTS="-Djava.awt.headless=true -Xmx2g"

或者另一个选项是使用jvm.config (位于.mvn目录中的项目中)文件可以包含:

代码语言:javascript
复制
-Xmx2048m -Xms1024m -XX:MaxPermSize=512m -Djava.awt.headless=true

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

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

此外,我想简单地说,这本书的引文。从默认值开始。如果我们谈论的是性能,那么您应该真正检查一下问题是否真的是我通常怀疑的内存问题。当然,如果我们说的是在单个多模块构建中有100+模块的构建,那么就会产生影响。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55363298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档