java - 如何计算/近似递归函数的堆栈帧使用的内存?

标签 java recursion memory stack stack-frame

我希望能够根据递归函数的参数计算或至少近似计算递归函数的特定堆栈帧将使用多少内存(以字节或其他形式)。

例如,递归函数的堆栈帧可能需要多少内存,例如 Sample_recursive_function(int [] array, int n) 取什么?

最佳答案

您可以用参数的大小加上常量返回地址大小来近似。对于您的示例,它很小:int[] 是指针类型(对于 java、C++ 或 C#)并使用 4 或 8 个字节(取决于代码是在 32 位还是 64 位上运行),int 是 4 个字节并且返回地址也是 4 或 8 字节。因此,该函数的优化堆栈帧在 32 位上为 12 字节,在 64 位上为 32 字节(由于填充)。在 Debug模式下运行时,可能会使用一些额外的字节。此外,函数中的任何局部变量也会增加堆栈帧的大小。细节可能有点复杂。

关于java - 如何计算/近似递归函数的堆栈帧使用的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47606967/

相关文章:

java - 如何获取Java异常堆栈跟踪所涉及的实例的引用?

java - Postgresql 日期类型和 java SimpleDateFormat

javascript - 递归地迭代一个对象并将父级附加到每个子级

c# - 可以在不刷新的情况下连续写入流,将其内容强制写入大对象堆吗?

c - dart VM 是否对 native 扩展的堆栈内存大小施加限制?

java - 处理小文件mapreducehadoop

Windows上的java println输出编码

谁能解释为什么我的合并排序不起作用?

c# - 用递归寻找最便宜的道路

c - OpenCL 程序使用太多内存