2011-05-11 78 views
0

我需要更改JVM的线程池大小。有没有可能做到这一点。 我正在JVM上运行一个高线程的jar。这就是为什么一些线程进入睡眠或阻塞阶段。更改JVM的线程池大小

回答

0

jvm本身没有全局线程池。如果您正在使用java.util.concurrent.Executor实现之一,请阅读该类/方法的javadoc。这是通过您创建的每个池中的java代码(来自您的代码)进行调整的,并且与JVM无关。这就是说,请考虑每个线程(通常)为其堆栈消耗512k的虚拟内存,这限制了32位jvm的最大可用thred的数量(但它听起来不像是你的问题完全)。

当你的线程阻塞很多时,你可能也会有某种争用,这意味着你有一些他们正在等待的公共资源。也许你在使用“同步”很多?更多的线程不会解决这个问题,而只是在OS和JVM中消耗更多的资源。

请回复一下你的代码在做什么以及如何做的更多细节,也许我可以帮助更多。