遇到的问题
按照网上的教程,在进行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官方文档也是挺坑的,没说明白吧。

版权声明:本文为ysk_xh_521原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。