java运行时数据区域--jvm内存结构

先看图:五大区域

1.方法区主要存储:类的所有信息(方法,属性等)

static类型的类进入方法区之后会在方法区开辟属于自己的空间,所以静态的可以直接被调用,而非静态的不能直接被调用

不仅是Java语言,其他的语言也是如此

2.栈区:运行时的单位

栈中存的是基本数据类型和堆中对象的引用

开辟一个小栈(开启一个线程)使用完会销毁:复制(拷贝一份)方法区中的方法进行压栈调用,完后出栈,先进后出

主方法(main最先进去),然后依次调用m1方法,进栈出栈,然后轮到m2.依次进行,最后main方法出栈

2.1声明变量原理

声明变量是入栈,遇到{}后面的括号后,出栈(所在的方法在栈中也是一个小栈),跟方法出栈进栈是一样的

3.程序计数器:

线程私有的,是一块很小的内存空间,作为当前线程的行号指示器,用于记录当前虚拟机正在执行的线程指令地址(下一次时间片到了之后又可以取指令再次执行)

4.堆区:存储的单位

存放创建的对象(分配了内存地址)、

类是对象的模板,对象是类的实例

方法区中的类作为模板,在堆中造出对象

Person x1=new Person();

句柄=值的地址(堆内存中开辟地址)

5.本地方法栈:本地方法栈(Native Method Stacks)与虚拟机栈所发挥的作用是非常相似的,其区别只是虚拟机 栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的本地(Native) 方法服务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值