jvm是否为每个线程创建一个单独的堆栈和方法区域?方法指令是否在方法/类区域本身中有用?

时间:2015-05-24 10:44:53

标签: java multithreading memory stack

据我所知,堆区域由所有线程共享,并且包含创建的对象。 但是我怀疑类/方法区域是否也是专门为每个线程创建的,或者它也像堆区域这样的所有线程都是通用的?我已经读过方法/类区域包含静态成员以及方法的说明。但是这些指令的执行方式和位置是什么?这些指令是在堆栈区域还是在方法区域中执行的?

1 个答案:

答案 0 :(得分:0)

当您开始执行您的应用程序/类时,会发生以下情况(简化步骤,您可以更详细地阅读它):
1)JVM检查类定义是否由ClassLoader加载到内存空间中 2)如果类定义尚未加载,则现在将加载
2a)以上两个步骤确保您JVM仅加载类定义/方法/静态变量... 一次
3)实例化类(对象) - 即设置实例变量并将结果(数据)对象存储在堆上 4)参数和方法 - 局部变量(值)存储在堆栈中,用于每次调用任何给定方法
4a)注意:JVM中只有只有一个类/方法定义 5)执行指令(在方法定义中)操作参数和方法局部变量并返回结果