JVM的Xss选项是否仅涵盖Java堆栈还是包括本机堆栈?

时间:2013-11-17 13:16:39

标签: java jvm

我知道像Harmony JVM这样的虚拟机将Java Stack和Native Stack放在一个堆栈中,并使用M2N Frame为每个线程执行堆栈展开。

其他一些JVM似乎将它们分开。我的问题是JVM的Xss选项设置JVM的最大堆栈大小覆盖Java堆栈的总大小还是包括本机堆栈的大小?

1 个答案:

答案 0 :(得分:6)

我对此没有明确的答案,但当您查看热点成为默认虚拟机时发布的一些文档时,您可以看到this,其中说明:

  

HotSpot没有单独的本机和Java堆栈

另一个轶事证据可以在this blog post中找到,它涉及堆栈大小调整:

  

请注意,您的操作系统完全有可能为其舍入值   由-Xss参数指定的堆栈大小。请注意这一点。

所以看来hotspot每个线程只有一个堆栈,实际上是本机的os提供的堆栈(因此是舍入的)。

还有更多证据here

  

在HotSpot实现中,Java方法共享堆栈帧   C / C ++本机代码,即用户本机代码和虚拟机   本身

最后,in openjdk source code

  

// HotSpot没有单独的本机和Java堆栈