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/