1

众所周知,所有大多数递归函数都可以修改为迭代方法。假设我们以添加两个表示两个巨大数字的链接列表为例。这个问题可以通过递归(使用系统堆栈)或迭代(显式堆栈使用)方法来解决。

我的疑问是,如果我已经给出了 jvm 堆大小,-Xms2048MB -Xmx2048M那么在递归方法中它是否会将所有堆内存用于系统堆栈?AFAIK,如果我将使用显式堆栈,那么它可以消耗所有这些内存。如果有人还可以告诉我如何、何时以及分配多少系统堆栈内存以及一些工作原理,那就太好了。即使指向一些不错的教程也会有很大帮助。如果可以将其限制在java世界范围内,那就更好了。谢谢。

4

1 回答 1

2

这是不可能发生的,因为堆栈帧有自己的大小。这个大小可以通过命令行参数来调整-Xss<size>

堆内存与此堆栈内存完全分离。

默认堆栈大小取决于您正在运行的 JVM

于 2013-07-09T12:32:37.150 回答