0

分配给 jvm 进程的总内存等于总堆、栈、本机堆。我知道有一些命令可以设置堆的最小和最大大小限制。

分配给jvm进程的总内存怎么样,是否有限制,或者它会随着创建的线程数量的增加而继续增加。

如果线程数没有限制,并且由于在创建新线程时会创建新堆栈,这是否会导致 jvm 继续增加其大小,直到 RAM 中没有更多内存?

4

2 回答 2

0

据我所知是这样。线程堆栈分配在 JVM 堆栈和操作系统特定。

您可以使用 -Xss 来控制默认堆栈大小,但不能控制其上限。

有趣的文章

http://www.onkarjoshi.com/blog/209/using-xss-to-adjust-java-default-thread-stack-size-to-save-memory-and-prevent-stackoverflowerror/

http://blog.codecentric.de/en/2010/01/the-java-memory-architecture-1-act/

http://book.javanb.com/java-threads-3rd/jthreads3-CHP-13-SECT-6.html

于 2013-04-09T18:52:22.750 回答
0

总堆。新线程使用堆内存。如果你有太多的话,你会OOME的。试试看?

于 2013-04-09T18:13:10.823 回答