Java内存模型(JMM)

一.概述

JMM定义了java并发编程中各个线程之间如何通信如何同步的规范。java并发采用的是共享内存模型,通过读写内存当中的公共部分来实现线程之间的通信和同步。
JMM的抽象模型可表示为:
在这里插入图片描述
如上图所示,每一个线程都对应着一个特有的本地内存,这里面存放着来自主内存的共享变量(实例域、静态域和数组元素等)的副本。如果要在不同线程之间进行通信和同步,就必须通过主内存才能实现。
注意:本地内存只是JMM的一个抽象概念,实际上并不存在。

二.实现

JVM的内存区域划分:
在这里插入图片描述

:堆中数据可被多线程共享,java程序中所创建的所有Class对象、static域和数组元素都存放在堆当中。
方法区:也是做为共享内存区域,其中存放类的方法代码、方法名、变量名、访问权限等信息
虚拟机栈:每一个线程在运行时都会拥有一个只属于自己的线程栈,其中的每一个方法在执行的时候都会创建一个用于存储局部变量表、操作数栈、动态链表、方法出口信息等的栈帧,方法的执行与结束就对应着栈帧的入栈和出栈。线程栈的生命周期与线程同步。
本地方法栈:与虚拟栈栈类似,也是用来执行方法的。只不过本地方法栈是用来执行Native Method的。Native Method简单理解:简单说来,本地方法即是用非java代码实现的方法。定义一个native method方法时不必提供实现体,因为本地方法是在外部用其他语言实现的。
程序计数器:是用来存放执行指令地址的地方。CPU通过在程序计数器中存放指令的地址保证进程的成功执行。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值