이 테스트는 내가 기본 힙 크기 (256M) 나에 대한 최대 힙 크기를 증가시킬 때 나는왜 최대 힙 크기를 늘리면 최대 스레드 수가 감소합니까?
Max memory 247M
Max threads 2247
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:691)
at test.Test1.main(Test1.java:19)
를 얻을 그것을 실행하면 자바
System.out.println("Max memory " + Runtime.getRuntime().maxMemory()/1024/1024 + "M");
for (int i = 0;; i++) {
Thread t = new Thread() {
public void run() {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
}
};
};
try {
t.start();
} catch (Error e) {
System.out.println("Max threads " + i);
e.printStackTrace();
System.exit(1);
}
}
에서 만들 수있는 스레드의 최대 수를 표시 내가 1024M에 최대 힙 크기를 증가시킬 때 512M은 내가
을 얻을Max memory 494M
Max threads 1906
...
를 얻을 수
Max memory 989M
Max threads 1162
...
즉, 더 많은 메모리를 힙 메모리에 저장합니다. 왜 그런가요?
'java -version'을 (를) 볼 수 있습니까? – NPE
Windows 7에서 HotSpot (TM) 클라이언트 VM 1.7.0_21입니다. –
더 많은 스레드 = 적은 힙 –