1

这是我认为相关的错误消息:

Caused by: java.io.IOException: Cannot run program "/usr/bin/git" (in directory "/var/lib/hudson/jobs/Goals/workspace"): java.io.IOException: error=12, Cannot allocate memory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:474)
    at hudson.Proc$LocalProc.<init>(Proc.java:192)
    at hudson.Proc$LocalProc.<init>(Proc.java:164)
    at hudson.Launcher$LocalLauncher.launch(Launcher.java:638)
    at hudson.Launcher$ProcStarter.start(Launcher.java:273)
    at hudson.Launcher$ProcStarter.join(Launcher.java:280)
    at hudson.plugins.git.GitAPI.launchCommandIn(GitAPI.java:319)
    ... 15 more
Caused by: java.io.IOException: java.io.IOException: error=12, Cannot allocate memory
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:164)
    at java.lang.ProcessImpl.start(ProcessImpl.java:81)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:467)
    ... 21 more

您还可以在此处查看 Hudson 的完整输出:http: //hudson.pastebin.com/KLSNrY1D

有任何想法吗?我怎样才能阻止这种情况发生?我不是 Java 开发人员,所以我不太了解这里发生了什么。我必须完全重新启动 Hudson 才能解决此问题,但显然这不是最佳答案。

4

3 回答 3

3

听起来您已经用尽了盒子上的交换空间。

java.lang.ProcessBuilder.start() 最终必须归结为在类 Unix 操作系统上的 fork 或 clone 系统调用以创建新进程。这需要交换空间。而你似乎还不够。这更多是在 Unix 系统管理领域,而不是 Java。

于 2010-07-13T17:32:12.610 回答
2

为了我:

echo 0 > /proc/sys/vm/overcommit_memory

解决了这个问题。

于 2011-07-07T12:02:58.897 回答
1

您一次运行多少个外部程序?有多少哈德逊建筑商等?发生这种情况时,“免费”会说什么?

您可能只是遇到了系统已用完具有子进程的 hudson 进程可用的内存。

于 2010-07-13T17:02:52.513 回答