龙空技术网

JVM内存模型 之 栈内存

爪哇岛布鲁布鲁佳 82

前言:

当前兄弟们对“java内存栈桢”大致比较关心,朋友们都想要了解一些“java内存栈桢”的相关文章。那么小编在网摘上收集了一些关于“java内存栈桢””的相关内容,希望同学们能喜欢,兄弟们一起来学习一下吧!

栈内存保存基础数据类型的对象和自定义对象的引用,注意,这里是对象的引用,对象都存放在堆内存中,对象实例必须通过栈内存中保存的地址指针才能访问到。

当启动一个新的线程时,JVM会为该线程分配一个java栈,以栈帧为单位保存运行时数据,对于栈来说不存在垃圾回收问题,只要线程结束,该栈就释放。比如,当一个方法A被调用,就会产生一个栈帧M1,并被压入栈,然后A方法又调用了B方法,那么又会产生帧栈M2,入栈出栈遵循“先进后出”的原则。

//appMain元数据放入到方法区

//元数据并不是类的Class对象!Class对象是加载的最终产品,类的方法代码//,变量名,方法名,访问权限,返回值等等都是在方法区的

public class AppMain{

//main方法本身的元信息也放入到方法区

public static void main(String[] args){

//s1是引用,放到栈内存,Sample对象放到堆内存

Sample s1 = new Sample("test1");

Sample s2 = new Sample("test2");

test1.printName();

test2.printName();

}

}

//Sample元数据放入到方法区

public class Sample{

//基础数据类型法如栈内存

private String name;

public Sample(String name){

this.name = name;

}

//printName方法元数据放入方法区

public void printName(){

System.out.println(name);

}

}

大家可以更加深入的思考一个问题,静态属性和静态方法是如何利用栈内存的呢? JavaBean的singleton模式下,又是如何运行的呢?

关注本号,后续会持续更新。

标签: #java内存栈桢