哈德逊大厦总是以;java.lang.OutOfMemoryError:java堆空间;错误

哈德逊大厦总是以;java.lang.OutOfMemoryError:java堆空间;错误,java,hudson,Java,Hudson,Hudson build slave有一个问题,它有Windows XP和4 GB RAM,在批处理文件中调用JNLP,我指定如下: javaws-J-Xms1280m-J-Xmx1024m 为什么我不能给它超过1GB The system is out of resources. Consult the following stack trace for details. java.lang.OutOfMemoryError: Java heap space at com.su

Hudson build slave有一个问题,它有Windows XP和4 GB RAM,在批处理文件中调用JNLP,我指定如下:

javaws-J-Xms1280m-J-Xmx1024m

为什么我不能给它超过1GB

The system is out of resources. Consult the following stack trace for details. java.lang.OutOfMemoryError: Java heap space at com.sun.tools.javac.util.List.prepend(List.java:145) at com.sun.tools.javac.jvm.ClassReader.openArchive(ClassReader.java:1457) at com.sun.tools.javac.jvm.ClassReader.list(ClassReader.java:1742) at com.sun.tools.javac.jvm.ClassReader.listAll(ClassReader.java:1882) at com.sun.tools.javac.jvm.ClassReader.fillIn(ClassReader.java:1903) at com.sun.tools.javac.jvm.ClassReader.complete(ClassReader.java:1538) at com.sun.tools.javac.code.Symbol.complete(Symbol.java:355) at com.sun.tools.javac.comp.Enter.visitTopLevel(Enter.java:256) at com.sun.tools.javac.tree.Tree$TopLevel.accept(Tree.java:382) at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:221) at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:235) at com.sun.tools.javac.comp.Enter.complete(Enter.java:448) at com.sun.tools.javac.comp.Enter.main(Enter.java:433) at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:404) at com.sun.tools.javac.main.Main.compile(Main.java:592) at com.sun.tools.javac.main.Main.compile(Main.java:544) at com.sun.tools.javac.Main.compile(Main.java:85) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.plexus.compiler.javac.JavacCompiler.compileInProcess(JavacCompiler.java:420) at org.codehaus.plexus.compiler.javac.JavacCompiler.compile(JavacCompiler.java:141) at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:493) at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:483) at hudson.maven.agent.PluginManagerInterceptor.executeMojo(PluginManagerInterceptor.java:182) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:678) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:540) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:519) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:371) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:332) [INFO] ------------------------------------------------------------------------ [INFO] For more information, run Maven with the -e switch [INFO] ------------------------------------------------------------------------ [INFO] Total time: 34 seconds [INFO] Finished at: Fri Oct 08 17:27:59 EST 2010 [INFO] Final Memory: 25M/63M [INFO] ------------------------------------------------------------------------ 系统资源不足。 有关详细信息,请参阅以下堆栈跟踪。 java.lang.OutOfMemoryError:java堆空间 位于com.sun.tools.javac.util.List.prepend(List.java:145) 位于com.sun.tools.javac.jvm.ClassReader.openArchive(ClassReader.java:1457) 位于com.sun.tools.javac.jvm.ClassReader.list(ClassReader.java:1742) 位于com.sun.tools.javac.jvm.ClassReader.listAll(ClassReader.java:1882) 位于com.sun.tools.javac.jvm.ClassReader.fillIn(ClassReader.java:1903) 位于com.sun.tools.javac.jvm.ClassReader.complete(ClassReader.java:1538) 位于com.sun.tools.javac.code.Symbol.complete(Symbol.java:355) 在com.sun.tools.javac.comp.Enter.visitoplevel(Enter.java:256)上 在com.sun.tools.javac.tree.tree$TopLevel.accept(tree.java:382)上 位于com.sun.tools.javac.comp.Enter.classEnter(Enter.java:221) 位于com.sun.tools.javac.comp.Enter.classEnter(Enter.java:235) 在com.sun.tools.javac.comp.Enter.complete上(Enter.java:448) 位于com.sun.tools.javac.comp.Enter.main(Enter.java:433) 位于com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:404) 位于com.sun.tools.javac.main.main.compile(main.java:592) 位于com.sun.tools.javac.main.main.compile(main.java:544) 位于com.sun.tools.javac.Main.compile(Main.java:85) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中 位于java.lang.reflect.Method.invoke(Method.java:585) 位于org.codehaus.plexus.compiler.javac.JavacCompiler.compileInProcess(JavacCompiler.java:420) 位于org.codehaus.plexus.compiler.javac.JavacCompiler.compile(JavacCompiler.java:141) 位于org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:493) 位于org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114) 位于org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:483) 位于hudson.maven.agent.pluginmanagerAcceptor.executeMojo(pluginmanagerAcceptor.java:182) 位于org.apache.maven.lifecycle.DefaultLifecycleExecutor.ExecuteGals(DefaultLifecycleExecutor.java:678) 位于org.apache.maven.lifecycle.DefaultLifecycleExecutor.ExecuteGalWithLifecycle(DefaultLifecycleExecutor.java:540) 位于org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:519) 在org.apache.maven.lifecycle.DefaultLifecycleExecutor.ExecuteGalandLifeures上(DefaultLifecycleExecutor.java:371) 位于org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:332) [信息]------------------------------------------------------------------------ [INFO]有关更多信息,请使用-e开关运行Maven[INFO]------------------------------------------------------------------------ [信息]总时间:34秒 [信息]完成时间:美国东部时间2010年10月8日星期五17:27:59[信息]最终内存:25M/63M[信息]------------------------------------------------------------------------
Xms
通常应低于
Xmx

构建是否由从属代理的JVM直接执行?如果运行Maven构建(例如),从属代理可以启动外部Maven进程(使用默认的JavaXMX)


因此,您应该指定MAVEN_OPTS参数,以确保始终使用自定义的Xmx值执行MAVEN构建。

如果您有主从配置,则应该在Manage Hudson->Configure system->Global properties中指定内存设置


主服务器上的环境属性也用于从服务器。

请注意:在32位Windows上,Java虚拟机分配的空间不能超过1 GB。不要问我为什么,但事实就是这样(至少Sun JVM就是这样)。如果JVM需要更多内存,则需要64位系统。当然还有一个64位JVM。

您需要
-J
标志将JVM参数传递给
javaws
(Java Web Start)。啊,是的,谢谢您的回复,但是该值仍然不能大于1 GB?我不知道为什么,这台电脑在Windows XP msinfo32中有3.24 GB可用空间。谢谢你的回复,所以在这种情况下,我应该转到HUDSON服务器并更改该值?(什么文件,在哪里?)感谢Benoit,它是Hudson中的一个maven选项,允许它在执行maven构建时为JVM分配更多内存。在服务器中进行更改后(通过基于web的控制台),它现在可以正常工作。