JMM随笔

     文章由问题产生,问:目前存在多个类,这些类里面有类成员变量(基本类型和引用类型),有静态方法,有静态变量,也有普通方法,这些数据和代码分别存在java内存模型的哪些地方?

      回答:  java内存模型中有堆,方法区,虚拟机栈(一般说栈就是指虚拟机栈),本地方法栈(用来执行本地方法的栈),程序计数器(指示程序执行到哪个地方) 

            通过new创建的对象,不管你属于哪个类,统一存储在java堆中。栈中通过引用,堆中的内存区域,来获得自己想要的数据。

方法区中,存储类的信息。类的成员变量(基本类型和引用类型),它们都是对象的一部分,所以它们和对象一样,存储在堆中。

       静态变量存储在静态存储区。普通方法和静态方法,存储在方法区中。

       当存在多个线程时,多个线程共享堆,和方法区。堆中的对象和方法区中的方法,有多个线程同时访问修改时,需要加锁。

        栈和程序计数器,是线程隔离的。即每个线程,都有自己的栈和程序计数器。

转载于:https://www.cnblogs.com/chenjiewhu/p/7504020.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值