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?
这个渐进式堆栈如何工作?还是我这里有什么问题...