java静态方法和非静态方法在运行时都是在同一个虚拟机栈内开辟空间么?

新手上路,请多包涵

image.png
不知道我理解的对不对,
比如下面两个方法

public static void a(Object obj){
    Object a = obj;
    int i = 0;
}

public void b(Object obj){
    Object a = obj;
    int i = 0;
}

a 方法字节码随类加载永久储存到方法区
b 方法则在对象创建的时候才会随对象暂时储存到堆区

a 方法和b方法在运行的时候表现形式完全一样,每次运行都会在上图的虚拟机栈区开辟栈桢,方法内部的变量都是局部变量并且随栈桢开辟而初始化,栈内代码运行完则释放栈桢全部内存,不会出现内存泄漏。

阅读 1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题