我的Jenkins作业内存不足,java.lang.OutOfMemoryError在构建日志中提供了消息。但是我使用Ubuntu软件包管理器(aptitude)或apt- get安装Jenkins,但我不知道在哪里寻找更改分配给Jenkins的堆空间的方法。
java.lang.OutOfMemoryError
aptitude
apt- get
OutOfMemoryErrorJenkins作业运行时,您可能会遇到两种消息:
OutOfMemoryError
java.lang.OutOfMemoryError: Heap space
java.lang.OutOfMemoryError: PermGen space
-Xmx
在Ubuntu 12.04 LTS上,取消注释第JAVA_ARGS10行的设置/etc/default/jenkins:
JAVA_ARGS
/etc/default/jenkins
XX:MaxPermSize=512m
512
例如,此摘录摘自/etc/default/jenkins全新安装的Jenkins之后的默认值:
# arguments to pass to java #JAVA_ARGS="-Xmx256m"
如果将堆空间设置为1 GB,将是这样:
# arguments to pass to java JAVA_ARGS="-Xmx1048m"
注意不要将堆大小设置得太大,因为分配的任何内容都会减少操作系统和其他程序可用的内存量,这可能会导致过多的分页(RAM和交换磁盘之间来回交换内存,这会减慢速度)您的系统关闭)。
如果还设置MaxPermSpace,则需要在参数之间添加一个空格):
MaxPermSpace
# arguments to pass to java JAVA_ARGS="-Xmx1048m -XX:MaxPermSize=512m"
进行更改后,请从Jenkins Web界面正常重启Jenkins,或使用强制从命令行立即重启sudo /etc/init.d/jenkins restart。
sudo /etc/init.d/jenkins restart
我发现以下站点对于理解Java最大和永久生成堆大小很有用:http : //www.freshblurbs.com/blog/2005/05/19/explaining-java-lang-outofmemoryerror- permgen-space.html。