JAVA_JVM的内存模型

https://blog.csdn.net/javazejian/article/details/72772461

首先要区分java内存区域与java内存模型(JMM)
java内存区域:是指在java程序运行时JVM对物理内存的划分。
java内存模型:是一组规则JMM,包括原子性,有序性,可见性,将物理内存抽象划分为主内存与工作内存。这组规则是虚拟机JVM为了处理线程安全问题而制定。

java虚拟机直接操作的对象为线程。

java的内存区域分为:
线程共享区域:堆内存,方法区
线程私有区域:本地方法栈,虚拟机栈,程序计数器

1.堆内存:在虚拟机启动时创建,是垃圾回收GC操作的主要区域,存储所有的对象实例,当堆内存无法再**做垃圾回收,且无法扩展时会抛出OutOfMemoryError 异常,也就是内存溢出。
2.方法区:属于线程的共享区域,也就是除了对象,编译器编译后(虚拟机加载类后)的所有共享数据都存在方法区里面,例如:常量,静态变量,类信息等。方法区还存在一个运行时常量池,它主要用于存放编译器生成的各种字面量和符号引用,这些内容将在类加载后存放到运行时常量池中,以便后续使用,例如:String s = “11”;int a = 1;
3.虚拟机栈:线程的私有区域,在线程创建时创建,用于存储线程方法调用的栈,每一个栈帧对应线程调用的一个方法,栈帧存储了改方法的变量表、操作数栈、动态链接方法、返回值、返回地址等信息。每个方法从调用直结束就对于一个栈桢在虚拟机栈中的入栈和出栈过程。
4.程序计数器:属于线程私有的数据区域,是一小块内存空间,主要代表当前线程所执行的字节码行号指示器。字节码解释器工作时,通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。
5.本地方法栈:本地方法栈属于线程私有的数据区域,这部分主要与虚拟机用到的 Native 方法相关,一般情况下,我们无需关心此区域。

java内存模型
JMM与Java内存区域的划分是不同的概念层次,更恰当说JMM描述的是一组规则,通过这组规则控制程序中各个变量在共享数据区域和私有数据区域的访问方式,JMM是围绕原子性,有序性、可见性展开的。
JMM将java内存抽象为主存与工作内存,对应着内存区域中的共享区域与私有区域。

1.主存:存储所有的共享数据,可以理解为堆内存与方法区的合并,不同的无论成员变量还是本地变量(局部)都存储在主存中。
2.工作内存:包括线程私有的数据,工作内存中的变量为主存中变量的副本,线程只能修改自己工作内存中的变量,在覆盖到主存中,而 多个线程同时进行这个操作往往会产生线程安全问题
JMM通过制定一组访问主存与工作内存的规则,来保证三个特性,从而解决线程安全问题,括号内为解决方式:
1.原子性:每一个操作都是原子类型的,无法继续拆分的。(synchronized,重入锁)
2.可见性:线程对变量做得操作,对其他线程来说都是可见的,其他线程能够获取到新的变量内容。(synchronized,volatile)
3.有序性:消除因为指令重排导致的线程操作乱序问题。(volatile)
happens-before 原则可解决三个特性。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,576评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,515评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,017评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,626评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,625评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,255评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,825评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,729评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,271评论 1 320
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,363评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,498评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,183评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,867评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,338评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,458评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,906评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,507评论 2 359

推荐阅读更多精彩内容