我知道如何使用-Xss为java线程设置堆栈大小,我们在产品中使用它。
但是当我们的应用程序中使用了大量线程时,并且设置了-Xss(我们将其设置为512k)。我们将遇到错误报告无法创建新的本机线程。 它应该与堆栈大小有关,因为当我们设置-Xss256k时,错误消失了。
我的问题是1个线程,Xss设置堆栈大小,但是所有线程堆栈大小怎么样? 整个Thread的总堆栈内存大小有什么限制? 我没有找到这样的JVM设置,而我们现在似乎遇到了这样的问题。
答案 0 :(得分:4)
-Xss
设置为每个新线程的堆栈保留的默认虚拟内存量。 (也就是说,对于每个没有通过其构造函数给出显式堆栈大小的新线程。)
没有选项可以限制所有线程的组合堆栈大小。
如果将-Xss
从512K设置为256K使程序能够创建更多线程,那么您的程序必须创建大量线程。
所有这些线程都在做什么?
您确定在线程池中使用有限数量的线程无法解决问题吗?