遇到的問題
按照網上的教程,在進行jvm參數調優的時候,無論修改xmx,xms,xss參數,可創建的最大線程數就是不變,很奇怪啊~
測試代碼
public class ThreadTest extends Thread {
public static void main(String[] args) {
for (int i = 0; ; i++) {
System.out.println("i = " + i);
new Thread(() -> {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
}
}
}
剛開始的執行結果一直是2028,如果你們也是這樣,那你們也應該是一個接近的值,剛開始的參數 -Xmx1g -Xms1g -Xss1M
問題解決
1.mac上有一個單進程的最大線程數限制,可以輸入下面命令查看。
sysctl kern.num_taskthreads
也就是說你的最大線程數永遠不可能超過2048
2.除了上面這個問題,還有個坑,就是參數的設置問題
-Xmx1g -Xms1g -XX:ThreadStackSize=230m
就是得用-XX:ThreadStackSize,而不能用-Xss
就上面這兩點,可以試試把-XX:ThreadStackSize=1m 調整爲 -XX:ThreadStackSize=100m 就能看出效果了