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
mac上调整jvm参数没效果的坑_第1张图片

问题解决

1.mac上有一个单进程的最大线程数限制,可以输入下面命令查看。

sysctl kern.num_taskthreads

在这里插入图片描述
也就是说你的最大线程数永远不可能超过2048

2.除了上面这个问题,还有个坑,就是参数的设置问题

-Xmx1g -Xms1g -XX:ThreadStackSize=230m

就是得用-XX:ThreadStackSize,而不能用-Xss
就上面这两点,可以试试把-XX:ThreadStackSize=1m 调整为 -XX:ThreadStackSize=100m 就能看出效果了
mac上调整jvm参数没效果的坑_第2张图片

最后吐槽一下,Java官方文档也是挺坑的,没说明白吧。

mac上调整jvm参数没效果的坑_第3张图片

你可能感兴趣的:(jvm相关)