java内存模型 JMM

目的

java内存模型主要目的是定义如何存储变量 的底层细节

分区

1 方法区(Method Area)
		主要用来存储类的信息(名称,修饰符),常量,静态变量,静态方法 以及类中的方法,属性信息 通过class对象	获取类的信息都来源于此
		内存共享,一般情况下不会被GC回收 ,使用内存超出设定值时也会抛出OutOfMemory异常
		是堆中的永久区, 通过 -XX:PermSizw设置初始值 -XX:MaxPermSize设置最大值
2 堆(Heap)
		堆是JVM内存中最大的一块, 内存共享 ,多线程不安全的地方,用来存储对象的实例(非基本数据类型), 由GC管理
		分为新生代和老年代
3 栈(stack)
		java栈总是和线程联系在一起,线程都有自己的栈,栈中有多个栈帧(对应的方法)存储局部变量,方法返回信息,操作数
		栈的栈顶就是当前线程正在执行的地方,线程计数器指向的地方,当方法执行完毕就会将该栈帧弹出,回到上个方法,
		而方法的返回值就是上个栈帧的操作数
4 程序计数器
		是一种数据结构,由于java是多线程的,所以每个线程都记录自己执行到那条地址,类似于localhost,是线程安全的
5 本地方法区
		类似与java栈,用来存储Native方法执行的数据

内存

JMM规定java中所有的变量存储在主内存中,每个线程拥有自己的工作内存,线程需要使用主内存的变量会去拷贝一个副本,
对变量的操作都必须使用工作内存里的变量,包括volatile(修改后的新值立刻同步到主内存,每次使用volatile变量前立即从主内存中刷新,变量的变化对每个线程都可见),不同的线程变量不能互相访问
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值