大佬教程收集整理的这篇文章主要介绍了如何解决调用Runtime#exec()的“ java.io.IOException:错误= 12,无法分配内存”?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
你的机器的内存配置文件是什么?例如,如果你跑步top
,那么你有多少可用内存?
我怀疑UnixProcess
执行a fork()
只是从操作系统中获取不到足够的内存(如果有内存可用,它将fork()复制该进程,然后exec()
在新的内存进程中运行ls,而且还没有达到目的)
编辑:重新。你的过量使用解决方案,它允许过量使用系统内存,可能允许进程分配(但不使用)超过实际可用内存的内存。因此,我猜想这些fork()
重复项将重复下面的注释中讨论的Java进程内存。当然,你不会使用内存,因为“ ls”将替换重复的Java进程。
在我的系统上,我无法运行启动流程的简单Java应用程序。我不知道该怎么解决。
你能给我一些解决方法的提示吗?
该程序是:
[root@newton sisma-acquirer]# cat prova.java
import java.io.IOException;
public class prova {
public static void main(String[] args) throws IOException {
Runtime.getRuntime().exec("ls");
}
}
结果是:
[root@newton sisma-acquirer]# javac prova.java && java -cp . prova
Exception in thread "main" java.io.IOException: CAnnot run program "ls": java.io.IOException: error=12,CAnnot allocate memory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:474)
at java.lang.Runtime.exec(Runtime.java:610)
at java.lang.Runtime.exec(Runtime.java:448)
at java.lang.Runtime.exec(Runtime.java:345)
at prova.main(prova.java:6)
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)
... 4 more
系统配置:
[root@newton sisma-acquirer]# java -version
java version "1.6.0_0"
OpenJDK Runtime Environment (IcedTea6 1.5) (fedora-18.b16.fc10-i386)
OpenJDK Client VM (build 14.0-b15,mixed modE)
[root@newton sisma-acquirer]# cat /etc/fedora-release
Fedora release 10 (CambridgE)
编辑:解决方案 这解决了我的问题,我不知道为什么:
回声0> / proc / sys / vm / overcommit_memory
谁能解释的投票:)
附加信息,顶部输出:
top - 13:35:38 up 40 min,2 users,load average: 0.43,0.19,0.12
Tasks: 129 @R_23_10586@l,1 running,128 sleeping,0 stopped,0 zombie
Cpu(s): 1.5%us,0.5%sy,0.0%ni,94.8%id,3.2%wa,0.0%hi,0.0%si,0.0%st
Mem: 1033456k @R_23_10586@l,587672k used,445784k free,51672k buffers
Swap: 2031608k @R_23_10586@l,0k used,2031608k free,188108k cached
附加信息,免费输出:
[root@newton sisma-acquirer]# free
@R_23_10586@l used free shared buffers cached
Mem: 1033456 588548 444908 0 51704 188292
-/+ buffers/cache: 348552 684904
Swap: 2031608 0 2031608
以上是大佬教程为你收集整理的如何解决调用Runtime#exec()的“ java.io.IOException:错误= 12,无法分配内存”?全部内容,希望文章能够帮你解决如何解决调用Runtime#exec()的“ java.io.IOException:错误= 12,无法分配内存”?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。