2010-10-08 22 views
3

我有問題,哈德森建立奴隸已得到 Windows XP 4 GB的RAM和在批處理文件中調用JNLP I已指定類似如下:哈德森建立總是在「java.lang.OutOfMemoryError:Java堆空間」錯誤

javaws的-J-Xms1280m -J-Xmx1024m http://hudson-master.domain.com:8080/computer/Exige/slave-agent.jnlp

爲什麼我不能給它超過1 GB?

任何幫助和建議將不勝感激。

謝謝, AWT

 
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] ------------------------------------------------------------------------ 

回答

1

如果您有主從配置,就應該在管理Hudson->配置系統 - >全局屬性

那種存在於主機環境屬性在從使用過的內存設置。

4

Xms通常應該比Xmx

+0

您需要'-J'標誌將JVM參數傳遞給'javaws'(Java Web Start)。 – dogbane 2010-10-08 07:27:20

+0

@fahd謝謝。刪除那個點 – Bozho 2010-10-08 07:45:48

+0

啊是的,謝謝你的回覆,但是這個值仍然不能大於1GB?我不知道爲什麼,這臺PC在Windows XP msinfo32中有3.24 GB可用。 – 2010-10-10 12:54:29

3

是對構建直接由從屬劑的JVM執行低?如果您運行Maven構建(例如),則從屬代理可以啓動外部Maven進程(使用默認的Java Xmx)。

因此,您應該指定MAVEN_OPTS參數以確保始終使用自定義的Xmx值執行Maven構建。

+0

+1,關於maven的好點 – Bozho 2010-10-08 15:47:18

+0

謝謝你的回覆,所以在這種情況下,我應該去HUDSON服務器並改變這個值? (什麼文件和哪裏?) – 2010-10-10 12:55:18

+0

感謝Benoit,這是哈德遜的一個maven選項,讓它在執行maven構建時爲JVM分配更多內存。它在服務器中進行更改(通過基於Web的控制檯)後現在可以正常工作。 – 2010-10-11 00:09:03

1

請注意:在32位Windows上,Java VM不能分配超過1 GB的內存。不要問我爲什麼,但情況就是這樣(至少Sun JVM就是這種情況)。如果您的JVM需要更多內存,則需要64位系統。當然還有一個64位的JVM。

相關問題