JVM 中的每个线程都有自己的堆栈,它们是私有的。公共资源可以从堆中访问,所有线程都可以使用这些资源。让我们考虑以下代码:
public class Test {
public static int getNum(num) {
return num;
}
public static void main(String[ ] args) {
int x = getNum(5);
System.out.println(x);
}
}
一旦Test类被加载,就会有一个线程main被执行。方法getNum存放在非堆内存的方法区,根据这篇文章
http://javapapers.com/core-java/java-jvm-memory-types/
为主线程分配了一个堆栈。现在我在这个线程中有两个方法调用。一个是getNum返回一个int,然后是System.out.println(Printstream类的静态方法)。
那么我是否可以在第一个方法调用被执行的地方创建一个新Stack的main stack,它返回到主线程以存储在变量x和一个新堆栈中,println其返回类型是void?
这个渐进式堆栈如何工作?还是我这里有什么问题...