zoukankan      html  css  js  c++  java
  • 02 java内存模型

    java内存模型

    1、JVM内存区域

    • 方法区:类信息、常量、static、JIT (信息共享)
    • java堆:实例对象 GC (信息共享) OOM
    • VM stack:JAVA方法在运行的内存模型 (OOM)
    • PC: java线程的私有数据,这个数据就是执行下一条指令的地址
    • Native method stack: 月JVM的native

    2、java内存模型(JMM 规范、抽象的模型)

    • 主内存:共享的信息
    • 工作内存:私有信息、基本数据类型,直接分配到主内存,引用的地址放在工作内存中,引用的对象放在堆中
    • 工作方式:
      • 线程修改私有数据,直接在工作内存修改
      • 线程修改共享数据,把数据复制到工作空间中,在工作空间中修改,修改完之后,刷新到主内存中

    3、 硬件内存架构月java内存模型

    cpu缓存的一致性问题:并发处理的不同步
    解决方法:
    - 总线加锁 降低了CPU的吞吐量
    - 缓存上的一致性协议(MESI)<br>
        当cpu在cache中操作数据时,如果该数据是共享变量,数据在cache读到寄存器中,进行新修改,并更新内存数据<br>
        cache line值无效,其他的cpu就从内存中读数据
    

    4、 并发编程的三个重要特征

    原子性、可见性和有序性

    • 原子性保证方式:
      • synchronized
      • JUC Lock的lock
    • 可见性
      • volatile:在JMM模型上实现MESI协议
      • synchronized:加锁
      • JUC Lock的lock
    • 有序性
      • Volatile禁止重排序
      • synchronized
      • happens-before原则
        • 程序次序原则
        • 锁定原则:后一次加锁必须等前一次解锁
        • Volatile原则:霸道原则
        • 传递原则:A--B--C A--C
  • 相关阅读:
    Windows CMD中 find命令(字符串查找)
    网络地址转换静态NAT
    网络地址转换静态NAT
    Android 的暗示 hint 用法
    Android 的暗示 hint 用法
    SQL Server 扩展事件
    SQL Server 扩展事件
    SqlServer中Exists的使用
    SqlServer中Exists的使用
    数据库还原,System.Data.SqlClient.SqlError: 因为数据库正在使用,所以无法获得对数据库的独占访问权。
  • 原文地址:https://www.cnblogs.com/lifeone/p/11653116.html
Copyright © 2011-2022 走看看