前言:
当前兄弟们对“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内存栈桢