它说here -Xss用于"set thread stack size",这究竟是什么意思?谁能帮我理解这个?
Java应用程序中的每个线程都有自己的stack . 堆栈用于保存返回地址,函数/方法调用参数等 . 因此,如果线程倾向于通过递归算法处理大型结构,则可能需要为所有这些返回地址等大量堆栈 . 使用Sun JVM,您可以通过该参数设置该大小 .
如果我没有弄错的话,这就告诉JVM在发出StackOverflowError之前会接受多少次连续调用 . 不是你想要改变的东西 .
每个线程都有一个堆栈,用于局部变量和内部值 . 堆栈大小限制了您的呼叫的深度 . 通常,这不是您需要改变的 .
它确实在JVM上设置堆栈大小 .
您应该在以下两种情况中触摸它:
StackOverflowError (堆栈大小大于限制),增加值
OutOfMemoryError: unable to create new native thread (线程太多,每个线程都有一个大堆栈),减少它 .
后者通常在你的Xss设置得太大时出现 - 然后你需要 balancer 它(测试!)
4 回答
Java应用程序中的每个线程都有自己的stack . 堆栈用于保存返回地址,函数/方法调用参数等 . 因此,如果线程倾向于通过递归算法处理大型结构,则可能需要为所有这些返回地址等大量堆栈 . 使用Sun JVM,您可以通过该参数设置该大小 .
如果我没有弄错的话,这就告诉JVM在发出StackOverflowError之前会接受多少次连续调用 . 不是你想要改变的东西 .
每个线程都有一个堆栈,用于局部变量和内部值 . 堆栈大小限制了您的呼叫的深度 . 通常,这不是您需要改变的 .
它确实在JVM上设置堆栈大小 .
您应该在以下两种情况中触摸它:
StackOverflowError (堆栈大小大于限制),增加值
OutOfMemoryError: unable to create new native thread (线程太多,每个线程都有一个大堆栈),减少它 .
后者通常在你的Xss设置得太大时出现 - 然后你需要 balancer 它(测试!)