詹金斯作为Windows服务扔掉了内存

时间:2012-03-07 09:07:53

标签: windows service jenkins out-of-memory

我已经将jenkins安装为windows服务并创建调用ant脚本的作业。 Ant脚本由mxmlc编译器组成,可编译Flex应用程序。虽然编译失败并抛出一个内存异常。我确实调整了ant_opts用于内存分配,但无济于事。但是当我尝试以独立模式运行jenkins时,问题不会发生。

我遇到过类似的问题吗?

Exceptions:
[javac] Compiling 163 source files to ....
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
 [copy] Copying 21 files to ....
[mxmlc] Loading configuration file ...
[mxmlc] ...
[mxmlc] Loading configuration file ...
[mxmlc] ...
[mxmlc] Loading configuration file ...
[mxmlc] ...
[mxmlc] Loading configuration file ...
[mxmlc] ...
[mxmlc] Loading configuration file C:\Program Files\Adobe\Flex Builder 3 Plug-in\sdks\3.5.0\frameworks\flex-config.xml
[mxmlc] Error: PermGen space
[mxmlc] 
[mxmlc] java.lang.OutOfMemoryError: PermGen space
[mxmlc]     at java.lang.ClassLoader.defineClass1(Native Method)
[mxmlc]     at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
[mxmlc]     at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
[mxmlc]     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
[mxmlc]     at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
[mxmlc]     at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
[mxmlc]     at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
[mxmlc]     at java.security.AccessController.doPrivileged(Native Method)
[mxmlc]     at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[mxmlc]     at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
[mxmlc]     at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
[mxmlc]     at org.apache.xerces.parsers.DTDConfiguration.createEntityManager(Unknown Source)
[mxmlc]     at org.apache.xerces.parsers.DTDConfiguration.<init>(Unknown Source)
[mxmlc]     at org.apache.xerces.parsers.StandardParserConfiguration.<init>(Unknown Source)
[mxmlc]     at org.apache.xerces.parsers.IntegratedParserConfiguration.<init>(Unknown Source)
[mxmlc]     at org.apache.xerces.parsers.XML11Configuration.<init>(Unknown Source)
[mxmlc]     at org.apache.xerces.parsers.XML11Configuration.<init>(Unknown Source)
[mxmlc]     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[mxmlc]     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
[mxmlc]     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
[mxmlc]     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
[mxmlc]     at java.lang.Class.newInstance0(Class.java:355)
[mxmlc]     at java.lang.Class.newInstance(Class.java:308)
[mxmlc]     at org.apache.xerces.util.ObjectFactory.newInstance(Unknown Source)
[mxmlc]     at org.apache.xerces.util.ObjectFactory.findJarServiceProvider(Unknown Source)
[mxmlc]     at org.apache.xerces.util.ObjectFactory.createObject(Unknown Source)
[mxmlc]     at org.apache.xerces.util.ObjectFactory.createObject(Unknown Source)
[mxmlc]     at org.apache.xerces.parsers.SAXParser.<init>(Unknown Source)
[mxmlc]     at org.apache.xerces.parsers.SAXParser.<init>(Unknown Source)
[mxmlc]     at org.apache.xerces.jaxp.SAXParserImpl.<init>(Unknown Source)
[mxmlc]     at org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser(Unknown Source)
[mxmlc]     at flex2.compiler.config.FileConfigurator.load(FileConfigurator.java:113)

1 个答案:

答案 0 :(得分:0)

在您用完Permgen空间后,请尝试通过调整JVM的参数来增加可用内存。

jenkins.jenkins \ jenkins.xml包含Windows服务的服务设置:这是我们的服务设置的副本。

<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>java</executable>
  <arguments>-Xrs -Xmx512m -XX:MaxPermSize=512m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "C:\Hudson\.hudson\jenkins.war" --httpPort=80</arguments>
  <logmode>rotate</logmode>
</service>

上周添加了 -XX:MaxPermSize = 512m 参数来解决与您非常相似的问题。