java - 栈帧占用的大小

标签 java memory stack-frame

Java 堆栈为每个方法调用创建新的框架,但是这个框架是否占用堆栈上的内存?

澄清我的问题:

public void oneWay()
{
  System.out.println("start");
  get1();
}

private void get1()
{
  System.out.println("get1");
  get2();
}

private void get2()
{
  System.out.println("get2");
}

这个输出是一样的:

public void anotherWay()
{
  System.out.println("start");
  System.out.println("get1");
  System.out.println("get2");
}

但是第二个片段在堆栈上占用的内存更多还是相等?简而言之,栈帧是否占用内存?

编辑: 堆栈帧需要多少内存? Sun(现在是 Oracle)是否有任何规范?

最佳答案

是的,当然。这就是为什么嵌套太深会导致堆栈溢出的原因。如果您发现您的线程需要更大(或更小)的堆栈,您可以使用 -Xss 命令行开关来修改堆栈大小。

specification似乎为实现提供了很大的自由度,所以总而言之,您不能真正依赖堆栈帧的大小。

关于java - 栈帧占用的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20094274/

相关文章:

Java Runtime exec 方法在使用自定义 URI 时抛出错误

c# - 弱引用优势

python - 如何从 Linux 上当前运行的 Python 进程访问数据结构?

c# - 用于 Web 应用程序的 GetEntryAssembly

objective-c - 堆栈 - 框架 - Objective-C 中的堆

templates - D 如何允许委托(delegate)作为模板参数?

java - 即时更新本地运行的基本cloudbees java应用程序

java - Gradle子项目类依赖

java - 如何在 Spring MVC 中回滚 Web 服务

c - 在 C 中重用内存