【发布时间】:2013-07-07 01:19:53
【问题描述】:
众所周知,所有大多数递归函数都可以修改为迭代方法。假设我们以添加两个表示两个巨大数字的链接列表为例。这个问题可以通过递归(使用系统堆栈)或迭代(显式堆栈使用)方法来解决。
我的疑问是,如果我将 jvm 堆大小指定为 -Xms2048MB -Xmx2048M,那么在递归方法中,它是否会将所有堆内存用于系统堆栈? AFAIK,如果我将使用显式堆栈,那么它可以消耗所有这些内存。如果有人还可以告诉我如何、何时以及分配多少系统堆栈内存以及一些工作原理,那就太好了。即使指向一些不错的教程也会有很大帮助。如果可以将其限制在 w.r.t 范围内,则尽可能javaworld 那么很好。谢谢。
【问题讨论】:
-
注意:
String是可以在堆栈上的引用,但实际对象在堆上。如果你使用对象,你应该假设无论你做什么它们都会使用堆空间。 -
顺便说一句,我只会写
-Xmx2g或-mx2g或者不设置它,默认是主内存大小的 1/4,只要你有一台像样的机器,你可能不会需要设置。
标签: java operating-system jvm heap-memory