Jenkins - 使用Java rumtime 64位元

前言

同事回報Jenkins建置時,發生錯誤:StackOverflowError,查詢相關文章後,判斷跟JVM使用記憶體上限有關。

解決方法
在jenkins.xml將記憶體調高,不過在32位元下的Java runtime下,最多只能調到1.5G左右,我目前的設定值為1024mb。鑑於目前CI主機有足夠的記憶體,可以讓Jenkins好好發揮。所以試著將Java runtime 改成64位元,才可以設定更高的記憶體。

1.下載java runtime 64 位元。本文安裝路徑:C:\Program Files\Java\jre1.8.0_241

2.修改jenkins.xml。
  • executable : 原為Jenkins內建的jre,改成jre 64位元安裝位置。ps:要指定.exe副檔案,網頁才有辨法執行。
  • arguments :本例 X2048m 為設定記憶體到2G
<service>
  <id>jenkins</id>
  <name>Jenkins</name>
  <description>This service runs Jenkins continuous integration system.</description>
  <env name="JENKINS_HOME" value="%BASE%"/>
  <!--
    if you'd like to run Jenkins with a specific version of Java, specify a full path to java.exe.
    The following value assumes that you have java in your PATH.
  -->
  <executable>C:\Program Files\Java\jre1.8.0_241\bin\java.exe</executable>
  <arguments>-Xrs -Xmx2048m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -Dmail.smtp.starttls.enable=true -jar "%BASE%\jenkins.war" --httpPort=8088</arguments>

  <logmode>rotate</logmode>


  <onfailure action="restart" />
    <extensions>
    <!-- This is a sample configuration for the RunawayProcessKiller extension. -->
    <extension enabled="true"
               className="winsw.Plugins.RunawayProcessKiller.RunawayProcessKillerExtension"
               id="killOnStartup">
      <pidfile>%BASE%\jenkins.pid</pidfile>
      <stopTimeout>10000</stopTimeout>
      <stopParentFirst>false</stopParentFirst>
    </extension>
  </extensions>
</service>



3.防火牆允許java runtime通過。


其它/參考

這個網誌中的熱門文章

[TFS] 分支與合併