java内存模型jvm虚拟机简要分析

 更新时间:2021年09月22日 17:27:14   作者:小伙无限帅  
Java 内存模型的主要目的是定义程序中各种变量的访问规则, 关注在虚拟机中把变量值存储到内存和从内存中取出变量值这样的底层细节

主内存和工作内存

  • Java 内存模型规定了所有的变量都存储在主内存中, 每条线程有自己的工作内存
  • 线程的工作内存中保存了被该线程使用的变量的主内存副本, 线程对变量的所有操作 (读取、赋值等) 都必须在工作内存中进行, 而不能直接读写主内存中的数据
  • 不同的线程之间也无法直接访问对方工作内存中的变量, 线程间变量值的传递均需要通过主内存来完成

内存间的交互操作

原子性、可见性、有序性

Java 内存模型是围绕着在并发过程中如何处理原子性、可见性、有序性这三个特征来建立的

原子性

基本数据类型的访问、读写都是具备原子性的。synchronized 实现原子性

可见性

可见性是指当一个线程修改了共享变量的值时, 其他线程能够立刻得知这个修改Java 内存模型是通过在变量修改后将新值同步回主内存, 在变量读取前从主内存刷新变量值这种依赖主内存作为传递媒介的方式来实现可见性的volatile、synchronized、final 实现可见性

有序性

volatile、synchronized 实现有序性

以上就是java内存模型jvm虚拟机简要分析的详细内容,更多关于java内存模型jvm虚拟机的资料请关注脚本之家其它相关文章!

相关文章

  • mybatisplus的坑 insert标签insert into select无参数问题的解决

    mybatisplus的坑 insert标签insert into select无参数问题的解决

    这篇文章主要介绍了mybatisplus的坑 insert标签insert into select无参数问题的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Mybatis执行SQL命令的流程分析

    Mybatis执行SQL命令的流程分析

    这篇文章主要介绍了Mybatis执行SQL命令的流程分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • 自带IDEA插件的阿里开源诊断神器Arthas线上项目BUG调试

    自带IDEA插件的阿里开源诊断神器Arthas线上项目BUG调试

    这篇文章主要为大家介绍了自带IDEA插件阿里开源诊断神器Arthas线上项目BUG调试,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • java通过AES生成公钥加密数据ECC加密公钥

    java通过AES生成公钥加密数据ECC加密公钥

    这篇文章主要为大家介绍了java通过AES生成公钥加密数据ECC加密公钥实现案例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • 基于OAuth2.0授权系统的验证码功能的实现

    基于OAuth2.0授权系统的验证码功能的实现

    本篇教程给大家分享基于OAuth2.0授权系统的验证码功能的实现,验证码功能的实现是采用Zuul网关的Filter过滤器进行校验验证码,具体实现代码跟随小编一起看看吧
    2021-05-05
  • Java Hutool 包工具类推荐 ExcelUtil详解

    Java Hutool 包工具类推荐 ExcelUtil详解

    这篇文章主要介绍了Java Hutool 包工具类推荐 ExcelUtil详解,需要引入hutool包,版本号可根据实际情况更换,除hutool包之外,还需要引入操作Excel必要包,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • Java中JDBC连接池的基本原理及实现方式

    Java中JDBC连接池的基本原理及实现方式

    本文详细讲解了Java中JDBC连接池的基本原理及实现方式,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • 关于Java的HashMap多线程并发问题分析

    关于Java的HashMap多线程并发问题分析

    HashMap是采用链表解决Hash冲突,因为是链表结构,那么就很容易形成闭合的链路,这样在循环的时候只要有线程对这个HashMap进行get操作就会产生死循环,本文针对这个问题进行分析,需要的朋友可以参考下
    2023-05-05
  • SpringBoot应用jar包启动原理详解

    SpringBoot应用jar包启动原理详解

    本文主要介绍了SpringBoot应用jar包启动原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • 日志模块自定义@SkipLogAspect注解跳过切面的操作方法

    日志模块自定义@SkipLogAspect注解跳过切面的操作方法

    文章介绍了一个自定义注解@SkipLogAspect,用于在日志模块中跳过特定方法的日志切面,这个注解可以用于需要避免大对象转换为JSON时导致的OOM问题,文章还提供了注解的实现代码以及一个测试示例,展示了如何在控制器中使用该注解来跳过日志切面,感兴趣的朋友一起看看吧
    2025-02-02

最新评论