现象:
公司换用新的服务器,配置为2核8G,JAVA和SDK环境变量已配置。构建打包时提示java-lang-OutOfMemoryError-Java-heap-space
定位问题:
在网上谷歌了半天,大部分的解决方法都是修改jenkins的配置:
命令行中使用vim编辑
vim /etc/sysconfig/jenkins
点击
i
进入编辑模式 修改为如下内容
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -Xms2048m -Xmx2048m"
按ESC退出编辑模式,输入:wq
保存(:q!
不保存退出)
但是实际测试发现仍然提示堆内存不足
使用ps -ef|grep jenkins
查看jenkins的任务,
显示内容为
jenkins 66287 1 0 Nov05 ? 00:04:54 /usr/local/jdk1.8.0_271/bin/java -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
jenkins 204645 66287 36 11:26 ? 00:00:01 /usr/local/jdk1.8.0_271/bin/java -Xmx64m -Xms64m -Dorg.gradle.appname=gradle -classpath /usr/local/gradle-6.5/lib/gradle-launcher-6.5.jar org.gradle.launcher.GradleMain app:clean app:assemblerelease --stacktrace --info -b ClassNote/build.gradle
jenkins 204683 204645 99 11:26 ? 00:00:05 /usr/local/jdk1.8.0_271/bin/java -Xms256m -Xmx512m -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant -cp /usr/local/gradle-6.5/lib/gradle-launcher-6.5.jar org.gradle.launcher.daemon.bootstrap.GradleDaemon 6.5
上文第三行的部分,说明gradle使用的堆内存最小256m,最大512m。这导致heapSize不足,打包失败
解决方法(通过xftp操作文件,比命令行更方便)
通过在/var/lib/jenkins/.gradle
文件夹下,增加一个文件gradle.properties
,内容为
org.gradle.jvmargs=-Xms2048m -Xmx2048m
即可修改gradle打包时的堆内存最小和最大都为2g,成功打包。