Ste*_*HHH 42 java heap ubuntu out-of-memory jenkins
我的Jenkins作业内存不足,java.lang.OutOfMemoryError
在构建日志中发送消息.但我使用Ubuntu软件包管理器,aptitude
或者apt-get
安装Jenkins,我不知道在哪里可以改变分配给Jenkins的堆空间量.
Ste*_*HHH 69
在OutOfMemoryError
Jenkins作业运行时,您可能会遇到两种类型的消息:
java.lang.OutOfMemoryError: Heap space
- 这意味着您需要在守护程序启动时增加分配给Jenkins的堆空间量. java.lang.OutOfMemoryError: PermGen space
- 这意味着您需要增加分配用于存储Java对象元数据的生成空间量.增加-Xmx
参数值不会影响此错误.在Ubuntu 12.04 LTS上,取消注释第JAVA_ARGS
10行的设置/etc/default/jenkins
:
-Xmx
Java参数的值.这设置了内存分配池(垃圾收集堆)的最大大小. XX:MaxPermSize=512m
(512
如果需要更多,请替换为其他内容.永久生成堆包含有关用户类的元信息.例如,/etc/default/jenkins
在全新安装Jenkins之后,此提取是默认设置:
# arguments to pass to java
#JAVA_ARGS="-Xmx256m"
Run Code Online (Sandbox Code Playgroud)
如果将堆空间设置为1 GB,则会出现这种情况:
# arguments to pass to java
JAVA_ARGS="-Xmx1048m"
Run Code Online (Sandbox Code Playgroud)
注意不要将堆大小设置得太大,因为你分配的内容会减少操作系统和其他程序可用的内存量,这可能会导致过多的分页(内存在RAM和交换盘之间来回交换,这将会减慢你的系统失败了).
如果你也设置了MaxPermSpace
,你需要在参数之间添加一个空格):
# arguments to pass to java
JAVA_ARGS="-Xmx1048m -XX:MaxPermSize=512m"
Run Code Online (Sandbox Code Playgroud)
进行更改后,从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.
小智 27
对于CentOS,默认情况下Jenkins.xml所在的目录是/ etc/sysconfig/for jenkins-1.579-1.1
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xmx -XX:MaxPermSize="
Jua*_* NR 12
如果您使用的是Ubuntu Server,请先安装Monitoring插件,看看Jenkins正在使用多少内存.例如,这是我在安装后看到的:
然后,通过该命令free -m
,我弄清楚服务器的内存大小是多少.就我而言,16Gb.有了这些信息,我打开/etc/default/jenkins
并更改了:
JAVA_ARGS="-Djava.awt.headless=true"
至
JAVA_ARGS="-Xmx8384m -Djava.awt.headless=true"
其中8384是8Gb.然后我用命令重新启动Jenkins sudo service jenkins restart
然后,在触发了导致内存问题的工作之后,事情看起来好多了,工作可以在这个和后续的运行中完成:
归档时间: |
|
查看次数: |
69944 次 |
最近记录: |