mac上調整jvm參數沒效果的坑

遇到的問題

按照網上的教程,在進行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 就能看出效果了
在這裏插入圖片描述

最後吐槽一下,Java官方文檔也是挺坑的,沒說明白吧。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章