一尘不染

当它作为守护程序在Ubuntu上运行时,如何给Jenkins更多的堆空间?

jenkins

我的Jenkins作业内存不足,java.lang.OutOfMemoryError在构建日志中提供了消息。但是我使用Ubuntu软件包管理器(aptitude)或apt- get安装Jenkins,但我不知道在哪里寻找更改分配给Jenkins的堆空间的方法。


阅读 185

收藏
2020-07-25

共1个答案

一尘不染

OutOfMemoryErrorJenkins作业运行时,您可能会遇到两种消息:

  • java.lang.OutOfMemoryError: Heap space –这意味着您需要在守护程序启动时增加分配给Jenkins的堆空间量。
  • java.lang.OutOfMemoryError: PermGen space–这意味着您需要增加分配用于存储Java对象元数据的生成空间量。增加-Xmx参数的值不会对此错误产生影响。

在Ubuntu 12.04 LTS上,取消注释第JAVA_ARGS10行的设置/etc/default/jenkins

  • 要添加更多的Java堆空间,请增加-XmxJava参数的值。设置内存分配池(垃圾收集堆)的最大大小。
  • 要添加更多的PermGen空间,请添加参数XX:MaxPermSize=512m512如果需要更多的参数,请替换其他内容。永久生成堆保存有关用户类的元信息。

例如,此摘录摘自/etc/default/jenkins全新安装的Jenkins之后的默认值:

# arguments to pass to java
#JAVA_ARGS="-Xmx256m"

如果将堆空间设置为1 GB,将是这样:

# arguments to pass to java
JAVA_ARGS="-Xmx1048m"

注意不要将堆大小设置得太大,因为分配的任何内容都会减少操作系统和其他程序可用的内存量,这可能会导致过多的分页(RAM和交换磁盘之间来回交换内存,这会减慢速度)您的系统关闭)。

如果还设置MaxPermSpace,则需要在参数之间添加一个空格):

# arguments to pass to java
JAVA_ARGS="-Xmx1048m -XX:MaxPermSize=512m"

进行更改后,请从Jenkins Web界面正常重启Jenkins,或使用强制从命令行立即重启sudo /etc/init.d/jenkins restart

我发现以下站点对于理解Java最大和永久生成堆大小很有用:http :
//www.freshblurbs.com/blog/2005/05/19/explaining-java-lang-outofmemoryerror-
permgen-space.html。

2020-07-25