Trên hệ thống của tôi, tôi không thể chạy một ứng dụng Java đơn giản bắt đầu quá trình. Tôi không biết cách giải quyết.Cách giải quyết "java.io.IOException: error = 12, Không thể cấp phát bộ nhớ" gọi Runtime # exec()?
Bạn có thể cho tôi một số gợi ý cách giải quyết không?
Chương trình này là:
[[email protected] sisma-acquirer]# cat prova.java
import java.io.IOException;
public class prova {
public static void main(String[] args) throws IOException {
Runtime.getRuntime().exec("ls");
}
}
Kết quả là:
[[email protected] 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
Cấu hình của hệ thống:
[[email protected] 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)
[[email protected] sisma-acquirer]# cat /etc/fedora-release
Fedora release 10 (Cambridge)
EDIT: Giải pháp Điều này giải quyết vấn đề của tôi, tôi không biết chính xác lý do:
vang 0>/proc/sys/vm/overcommit_memory
Up-phiếu cho là người có thể giải thích :)
thông tin bổ sung, đầu ra:
top - 13:35:38 up 40 min, 2 users, load average: 0.43, 0.19, 0.12
Tasks: 129 total, 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 total, 587672k used, 445784k free, 51672k buffers
Swap: 2031608k total, 0k used, 2031608k free, 188108k cached
thông tin bổ sung, đầu ra miễn phí:
[[email protected] sisma-acquirer]# free
total used free shared buffers cached
Mem: 1033456 588548 444908 0 51704 188292
-/+ buffers/cache: 348552 684904
Swap: 2031608 0 2031608
Đó là lỗi trong phiên bản Linux hoặc bạn có một số vấn đề đặc quyền. Bạn có thể nhìn vào UnixProcess: 164 trong nguồn để tìm hiểu những gì nó cố gắng phân bổ. – akarnokd
Bạn luôn có thể thử mặt trời jdk – wds
Tôi đã đăng liên kết tới một thư viện miễn phí giải quyết được vấn đề của bạn nhưng một người kiểm duyệt đã xóa câu trả lời của tôi mà không cần giải thích. Vì lợi ích của cộng đồng, tôi cung cấp cho nó một thử như bình luận: vấn đề bộ nhớ của bạn được giải quyết bởi Yajsw mà trên Linux sử dụng các cuộc gọi đến một thư viện C cho quá trình tạo ra. Đọc về nó ở đây: http://sourceforge.net/projects/yajsw/forums/forum/810311/topic/4423982 – kongo09