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

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>),好了下面开始说正事:


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

郑重声明:本站部分内容转载自网络,版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们(QQ/微信153890879)修改或删除,多谢。