我需要更改JVM的线程池大小。有没有可能做到这一点。 我在JVM上运行一个高线程jar。这就是为什么有些线程处于睡眠或阻滞阶段的原因。
答案 0 :(得分:0)
jvm本身没有全局线程池。如果您正在使用java.util.concurrent.Executor实现之一,请阅读该类/方法的javadoc。这是根据您创建的每个池的java代码(从您的代码中)调整的,并且与JVM无关。
那就是说,请考虑每个线程(通常)为它的堆栈消耗512k的虚拟内存,这限制了32位jvm的最大可用thred数量(但听起来这不是你的问题所在全部)。
当您的线程阻塞很多时,您可能也会遇到某种争用,这意味着您有一些他们正在等待的公共资源。也许你是在使用“同步”了很多?更多线程无法解决该问题,而只是在OS和JVM中消耗更多资源。
请回过头来了解一下您的代码正在做什么以及如何做的更多细节,也许我可以提供更多帮助。