StackOverflowError之前有多少递归调用?

时间:2013-06-24 21:05:05

标签: java

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

2 个答案:

答案 0 :(得分:3)

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

如果WAS指的是Websphere Application Server,您应该在管理控制台的某处配置一个配置面板来设置这样的java参数。它是,并且我认为它仍然是,IBM java命令行参数是Oracle参数的超集。

答案 1 :(得分:1)

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

您可以使用JVM的-Xss<size>参数增加为堆栈分配的内存量。 How to increase the Java stack size?