229 它在这里说-Xss用于“设置线程堆栈大小”,这到底是什么意思?有人可以帮我理解吗? java jvm javaoptions — Instantsetsuna source 这里的一些例子(不是我...):herongyang.com/JVM/... — 克里斯托夫•鲁西
269 Java应用程序中的每个线程都有其自己的堆栈。堆栈用于保存返回地址,函数/方法调用参数等。因此,如果线程倾向于通过递归算法处理大型结构,则所有这些返回地址等都需要大型堆栈。使用Sun JVM,可以通过该参数设置该大小。 — TJ人群 source 11 因此,-Xss选项用于限制堆栈消耗多少内存(通过存储返回地址,变量等),并且还间接限制堆栈可以达到的深度?我对么? — Instantsetsuna 5 @instantsetsuna:我认为更常见的用途可能是增加默认限制。(总会有一个限制。)但是,是的,您正在控制堆栈的大小,该大小控制堆栈可以达到的深度。 — TJ Crowder 在Java编译器(又名javac)上,您如何等效于此XSS设置?对于那些使用基于Scala的库的人来说,这是一个问题,这些库在类的编译中发生大尾递归– 9秒钟前的 — Andrew Norman @AndrewNorman:您不必将Java运行时选项编译到类文件中,这更多是特定于环境的。如果您确实需要在代码中执行此操作,则可以编写一个很小的主类,其唯一的工作就是使用所需的选项启动真正的应用程序。 — TJ Crowder @AndrewNorman您可以使用-Jflag语法(例如-J-Xss)为编译器应使用的JVM配置标志提供运行。 — francoisr
166 实际上,它在JVM上设置了堆栈大小。 在以下两种情况下,您都应该触摸它: StackOverflowError(堆栈大小大于限制),增加该值 OutOfMemoryError:无法创建新的本机线程(线程太多,每个线程都有大堆栈),请减少它。 后者通常在Xss设置太大时出现-然后您需要平衡它(测试!) — 亚当·亚当斯泽克(Adam Adamaszek) source 3 不一定每次都实际。SOE和OOME都可能由于不同的原因而发生,因此应以不同的方式进行固定。 — noego 2015年 4 是的,但我没有说-Xss是SOE和OOME的唯一原因,但反之亦然-如果设置不正确,它可能会导致这两者之一。 — 亚当·阿达马塞克