如果我在 Java 中递归调用一个方法,在我得到 StackOverflowException 之前,我可以提前知道多少次调用会成功?即某种有望在WAS 中配置的堆栈大小?
问问题
3582 次
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 回答