2013-02-07 34 views

回答

57

有兩種可能遇到的OutOfMemoryError消息而詹金斯作業運行:

  • java.lang.OutOfMemoryError: Heap space - 這意味着你 需要增加分配給詹金斯的堆空間量時 守護程序啓動。
  • java.lang.OutOfMemoryError: PermGen space - 這意味着您需要增加分配給存儲Java對象元數據的生成空間量 。 -Xmx參數的值將增加 對此錯誤沒有影響。

在Ubuntu 12.04 LTS,取消對/etc/default/jenkins十號線的JAVA_ARGS設置:

  • 要添加更多的Java堆空間,增加-Xmx Java參數的值。這設置了內存分配池(垃圾收集堆)的最大大小。
  • 要添加更多的PermGen空間,添加參數XX:MaxPermSize=512m(用別的東西代替512如果你想要更多。持久代堆保存有關用戶類的元數據信息。

例如,這種提取物是從默認/etc/default/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" 

進行更改後,從詹金斯Web界面平滑重啓詹金斯,或者在命令強制立即重啓與sudo /etc/init.d/jenkins restart

我發現以下網站對理解Java最大和永久生成堆大小有用:http://www.freshblurbs.com/blog/2005/05/19/explaining-java-lang-outofmemoryerror-permgen-space.html

+1

我想你忘記了秒破折號,所以它應該是:JAVA_ARGS =「 - Xmx1048m -XX:MaxPermSize = 512m」 –

+0

謝謝你!我添加了缺少的短跑。 –

+0

np,謝謝你的回答。 –

21

對於CentOS,Jenkins.xml默認位於的目錄是/ etc/sysconfig/for jenkins-1.579-1。1

JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xmx -XX:MaxPermSize="

+3

乾杯,我幾乎要瘋了試圖找到這個 – bmaher

+0

在我的** openSUSE Leap ** 42.1(x86_64)版本2.70的Jenkins配置位於'/ etc/sysconfig/jenkins' – user1053510

+0

也適用於RedHat RHEL 7.4,jenkins 2.98 –

1

如果使用的是Ubuntu的服務器,首先安裝Monitoring插件看到詹金斯使用多少內存。例如,這是我在安裝後看到:

enter image description here

然後,用命令free -m,我想通了,什麼是服務器的內存大小。在我的情況下,16Gb。隨着這些信息,我打開/etc/default/jenkins和改變:

JAVA_ARGS="-Djava.awt.headless=true"

JAVA_ARGS="-Xmx8384m -Djava.awt.headless=true"

其中8384爲8GB。然後我重新啓動詹金斯與命令sudo service jenkins restart然後,觸發這是越來越內存問題的工作後,事情看起來好多了,工作可以完成這一點,後續運行:

enter image description here

相關問題