0
我一直在阅读关于增加JVM堆栈大小(即允许更深的递归)的内容。Java:会减少堆栈大小加速频繁的方法调用?
但是我在问自己,会不会递减的堆栈大小加快方法调用?
也许我的理解是错误的,但我相信,每个堆栈的分配速度(不只为递归方法调用)取决于它的大小。
有人能指点我的基准,或者至少是关于这个话题的背景信息吗?
谢谢!
我一直在阅读关于增加JVM堆栈大小(即允许更深的递归)的内容。Java:会减少堆栈大小加速频繁的方法调用?
但是我在问自己,会不会递减的堆栈大小加快方法调用?
也许我的理解是错误的,但我相信,每个堆栈的分配速度(不只为递归方法调用)取决于它的大小。
有人能指点我的基准,或者至少是关于这个话题的背景信息吗?
谢谢!
每个平台的Java虚拟机实现将有所不同,但总的来说,这不会是一个具有重大影响的因素。分配内存是一种非常常见的操作,可能会进行高度优化。
例如,使用一个(pointer, size)
元组列表来指示堆栈空间将会很容易。现在你只需要说出你想要的堆栈的size
和指向保留空间的开始的pointer
,不管你想要多少空间。
因此,如果它不是一个很大的性能问题,为什么最大堆栈大小有限(默认情况下),即使在数千次递归之后,有时候方法调用“失败”? –
为什么会发生这种情况有很多种可能性。例如,JVM中的每个线程都有自己的堆栈。您的堆栈大小限制了您可以拥有的线程数量;如果它太大,则会耗尽内存,并且您将无法分配新线程。 –
@ java.is.for.desktop:必须限制最大堆栈大小,以便机器不会快速耗尽内存。速度不是问题。整体内存消耗是限制的原因。 –