最近拿到別組工程代碼准備開搞,剛用maven打包編譯就出現“java.lang.OutOfMemoryError: Java heap space”,很明顯是jvm heap的分配不夠,設置jvm的heap需要用Xmx參數,直接修改%M2_HOME%/bin/mvn.bat文件,這個是windows下maven的啟動腳本,看到有一行
@REM set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
在后面添加-XX:Xmx=1024M 設置下jvm的最大堆。若讀者是linux系統則修改同目錄下的mvn腳本。
周末看《maven實戰》,書上不太建議我們去修改mvn.bat文件,若修改該文件,我們在升級maven版本的時候,又要重新修改mvn.bat/mvn文件,不利於系統升級,給的建議是設置為環境變量,
Windows下添加環境變量MAVEN_OPTS的value為-Xms1024m -Xmx1024m -Xss1m
Linux下可修改.profile或者.bash_profile文件,並做如下設置:
export MAVEN_OPTS=”-Xms1024m -Xmx1024m -Xss1m”(注意:這里需要使用雙引號或者單引號)
備注:
解決自動熱部署時java.lang.OutOfMemoryError: PermGen space問題解決這一問題只需要增大PermGen區,默認為 64m,設置方法為:
set MAVEN_OPTS=-XX:MaxPermSize=128M
具體的參數值,可根據應用來決定