このテストでは、私は、デフォルトのヒープサイズ(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)
を取得し、それを実行すると、Javaの
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);
}
}
に作成できるスレッドの最大数を示します512M私は
Max memory 494M
Max threads 1906
...
私は1024Mに最大ヒープサイズを増やしたときに、私は
取得を取得Max memory 989M
Max threads 1162
...
つまり、より多くのヒープメモリが少ないスレッドです。何故ですか?
あなたの 'java -version'を見ることができますか? – NPE
Windows 7上のHotSpot(TM)クライアントVM 1.7.0_21です –
スレッド数が多い=ヒープの数が少ない –