JVM选项-Xss - 它到底做了什么?

时间:2011-02-11 10:22:46

标签: java jvm javaoptions

它说here -Xss用于“设置线程堆栈大小”,这究竟是什么意思?谁能帮我理解这个?

4 个答案:

答案 0 :(得分:244)

Java应用程序中的每个线程都有自己的stack。堆栈用于保存返回地址,函数/方法调用参数等。因此,如果线程倾向于通过递归算法处理大型结构,则可能需要为所有这些返回地址等大量堆栈。使用Sun JVM,您可以通过该参数设置该大小。

答案 1 :(得分:147)

它确实在JVM上设置堆栈大小。

您应该在以下两种情况中触摸它:

  • StackOverflowError (堆栈大小超过限制),增加值
  • OutOfMemoryError:无法创建新的本机线程(线程太多,每个线程都有一个大堆栈),减少它。

后者通常在您的Xss设置得太大时出现 - 然后您需要平衡它(测试!)

答案 2 :(得分:5)

每个线程都有一个用于局部变量和内部值的堆栈。堆栈大小限制了您的呼叫的深度。通常,这不是你需要改变的。

答案 3 :(得分:4)

如果我没有弄错的话,这就是告诉JVM在发出StackOverflowError之前会接受多少连续调用的内容。不是你想要改变的东西。