Jakarta ee 本机移动命令-java函数

Jakarta ee 本机移动命令-java函数,jakarta-ee,java,Jakarta Ee,Java,Java函数moveFile使用本机move命令将输出报告文件移动到就绪目录。它以前工作得很好,但现在开始抛出磁盘空间不足异常。但是当我检查磁盘空间时,目录中有很多可用的sace,我也做了清理。我试图重新运行它,但仍然得到以下错误。不知道是什么问题 java.io.IOException: Cannot run program "mv": error=12, Not enough space at java.lang.ProcessBuilder.start(ProcessBui

Java函数moveFile使用本机move命令将输出报告文件移动到就绪目录。它以前工作得很好,但现在开始抛出磁盘空间不足异常。但是当我检查磁盘空间时,目录中有很多可用的sace,我也做了清理。我试图重新运行它,但仍然得到以下错误。不知道是什么问题

java.io.IOException: Cannot run program "mv": error=12, Not enough space
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
        at java.lang.Runtime.exec(Runtime.java:593)
        at java.lang.Runtime.exec(Runtime.java:431)
        at java.lang.Runtime.exec(Runtime.java:328)
        at powertel.usageExtract.ctfCompactExtract.moveFile(ctfCompactExtract.java:507)
        at powertel.usageExtract.ctfCompactExtract.run(ctfCompactExtract.java:1189)
Caused by: java.io.IOException: error=12, Not enough space
        at java.lang.UNIXProcess.forkAndExec(Native Method)
        at java.lang.UNIXProcess.<init>(UNIXProcess.java:53)
        at java.lang.ProcessImpl.start(ProcessImpl.java:65)
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)

}

错误“空间不足”不是指磁盘空间,而是指尝试fork执行进程时的内存

分叉时,会临时复制Java进程的内存,系统上需要有足够的交换空间,以便在短时间内同时容纳父进程和子进程(在一定时间内,父进程和子进程的内存使用量相同)。如果要快速生成大量进程,可能需要更多内存

当Java进程非常大(例如appserver)时,这可能是一个主要问题

这一问题在这里有很好的描述:


错误“空间不足”不是指磁盘空间,而是指尝试fork执行进程时的内存

分叉时,会临时复制Java进程的内存,系统上需要有足够的交换空间,以便在短时间内同时容纳父进程和子进程(在一定时间内,父进程和子进程的内存使用量相同)。如果要快速生成大量进程,可能需要更多内存

当Java进程非常大(例如appserver)时,这可能是一个主要问题

这一问题在这里有很好的描述:


机器上是否有ulimit设置,不确定是否有帮助。文件大小是多少?同样,声明文件路径分隔符的系统属性非常有用,您可能需要考虑。Outfile和LoalBaseDeR在同一文件系统(挂载点)准备就绪,错误目录位于同一NFS文件系统中。输出目录在环境变量$CUSTOM_OUT中定义,该变量设置为/nan/OUT目录。在java程序中,它被检索并存储在outfile公共变量中。我将CUSTOM_OUT变量更改为我的主目录,它位于不同的文件系统上,创建了所需的目录并运行了它,但仍然收到相同的错误。计算机上是否有ulimit设置,不确定这是否有帮助。文件大小是多少?同样,声明文件路径分隔符的系统属性非常有用,您可能需要考虑。Outfile和LoalBaseDeR在同一文件系统(挂载点)准备就绪,错误目录位于同一NFS文件系统中。输出目录在环境变量$CUSTOM_OUT中定义,该变量设置为/nan/OUT目录。在java程序中,它被检索并存储在outfile公共变量中。我将CUSTOM_OUT变量更改为我的主目录,它位于不同的文件系统上,创建了所需的目录并运行了它,但仍然收到了相同的错误。非常感谢您提供的信息。java可执行文件的可选参数heap size早些时候设置为1GB,我将其更改为512M,它正常工作了-非常感谢您提供的信息。java可执行文件的可选参数heap size早些时候设置为1GB,我将其更改为512M,它正常工作了-Xms512m-Xmx512m
if (moveto == 1) {
    runCmd = "mv "+ outfile + " " + localbaseDir+"/ctf/ready/";
}
else {
    runCmd = "mv "+ outfile + " " + localbaseDir+"/ctf/error/";
}

try {
    Runtime r = Runtime.getRuntime();
    p = r.exec(runCmd);
    p.waitFor();
    extVal = p.exitValue();
    log.debug("Process exit value: " + extVal);
}
catch (IOException e) {
    extVal = 1;
    log.error("IO Exception - "+ e.getMessage());
    e.printStackTrace();
}
catch (InterruptedException e1) {
    extVal = 1;
    log.error("Interrupted Exception - "+e1.getMessage());
}

return extVal;