我正在尝试验证Java堆栈大小是固定的(在开头设置)还是有限的(增长到某个限制)。我试图通过一个创建一定数量线程的简单程序来测量它(使用set Xss),但到目前为止我只发现RSS是按进程进行的,并且明显有理由知道堆大小在这里没有意义。
答案 0 :(得分:1)
在Oracle和OpenJDK中,堆栈大小是固定的,不会缩小或增长。 根据平台的不同,默认大小会有所不同。
IBM J9以不同的方式处理这个问题:堆栈大小通过Java线程的下边界和上边界限制。 OS线程可以具有不同的堆栈大小。
如果您想估计所用内存的总大小,您必须知道正在使用的线程数,因为堆栈大小是Oracle / OpenJDK和J9上的每个线程。
答案 1 :(得分:0)
J9(现在是Eclipse#OpenJ9)允许Java堆栈增长。虽然本机线程的堆栈是固定的,但Java执行发生在由JVM管理的单独堆栈上。
Java堆栈从小规模开始,可以增长到用户可配置的限制。