全面解析JAVA内存模型

  1. java内存区域与java内存模型的区别

1Java内存区域

 

方法区:类、常量、static变量

堆:JVM启动的时候,存放Java实例对象

VM stack :Java的方法内存模型

 

程序计数器:线程的私有数据,用来记载下一条指令的地址

本地方法栈:Native

 

  1. Java内存模型
    Java Memeory model(JMM)抽象的概念,规则
    a从主存中复制数据到工作空间
    b线程操作工作空间中的数据
    C刷新主存中的数据
     
     
     
  1. 硬件内存架构与Java内存模型
  1. 硬件内存模型
     
  2. Java线程与硬件处理器
     
  3. Java线程与硬件内存的架构关系
     
  4. Java内存模型存在的必要性
    解决Java线程的不安全性

并发:

  1. java内存模型对并发特征的保证
  1. Java并发编程的三个重要特性
    原子性:不可分割的
    有序性:次序,Java代码中的次序  CPU中执行顺序
    可见性:线程内部私有数据对其他的线程是不可见的
    (2)JMM对三大特性的保证
    A JMM与原子性
  1. x=10;原子性  写
  2. Y=x;不具有原子性
    1. 线程X读到工作空间
    2. X的值写入到Y的空间
    3. 在主存中刷新Y的值
  3. i++ 不具有原子性
    1. 线程i读到工作空间
    2. i的值+1
    3. 在主存中刷新i的值
  4. Z=Z+1
        同
    多个原子性的操作组合到一起没有原子性
    简单的赋值是具有原子性的
    JMM值保证了基本读取和赋值操作具有原子性
    Synchronized    
    Lock  lock(锁)
    B JMM与有序性
        volatile
    Synchronized
    Lock(显式)
    Happens-before
  1. 程序次序
  2. 锁规则:后一次枷锁加锁必须在前一次解锁
  3. volatile规则:用volatile修饰的变量次序不能变化
  4. 传递规则:A  B  C
  5. 中断规则:interrupt()
  6. 线程终结:线程死亡之前,逻辑单元应该执行完成
  7. 对象终结:finalize()
    C JMM与可见性:
    Volatile:
    Synchronized    Lock  lock(锁)
    Cache line
     
     
    Synchronized    :
    Volatile:
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值