为什么要减小Java JVM线程堆栈的大小?

dja*_*fan 12 java jboss multithreading

我正在阅读一篇关于在Java(以及JBoss平台)上处理Out Of Memory错误情况的文章,我看到了这个减少threadstack大小的建议.

如何减小threadstack的大小有助于最大内存错误条件?

Ric*_*dle 9

当Java创建一个新线程时,它会为该线程的堆栈预先分配一个固定大小的内存块.通过减小内存块的大小,可以避免内存不足,特别是如果你有很多线程 - 节省内存是减少堆栈大小乘以线程数.

这样做的缺点是您增加了堆栈溢出错误的可能性.

请注意,线程堆栈是在JVM堆之外创建的,因此即使堆中有足够的可用内存,由于内存不足(或用尽地址空间,仍然无法创建线程堆栈) Hawtin正确地指出了).