4

如果我在 Java 中递归调用一个方法,在我得到 StackOverflowException 之前,我可以提前知道多少次调用会成功?即某种有望在WAS 中配置的堆栈大小?

4

2 回答 2

3

取决于你的堆栈大小。对于 Oracle 的 java,运行java -X可以设置的参数列表,包括-Xss<size>设置堆栈大小。有关一些详细信息,请参阅

如果您指的是 WAS Websphere Application Server,您应该在管理控制台的某个位置有一个配置面板,用于设置此类 java 参数。IBM java 命令行参数过去是,我认为现在仍然是,是 Oracle 参数的超集。

于 2013-06-24T21:07:19.397 回答
2

这取决于被压入堆栈的数据量(局部变量),以及分配给堆栈的内存量。每个递归调用将消耗等于所有本地变量和签名变量之和的数据量。这就是为什么应该避免递归调用的原因,除非递归的最大深度相当浅。

-Xss<size>您可以使用JVM的参数增加为堆栈分配的内存量。如何增加 Java 堆栈大小?

于 2013-06-24T21:13:32.667 回答