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
  • 相关阅读:
    使用API失效供应商地址Demo(转)
    供应商API补充(详解EBS接口开发之供应商导入)(转)
    供应商地点信息更新(转)
    OAF 小知识
    FNDLOAD移植Lookup Type
    OAF点击事件对页面组件的Required属性不验证
    MFC各种属性定义及DLL使用理解
    mfc制作ActiveX
    QT内置的ICON资源
    [Microsoft][ODBC Microsoft Access Driver] 参数不足,期待是 1
  • 原文地址:https://www.cnblogs.com/lifeone/p/11653116.html
Copyright © 2011-2022 走看看