当前位置: 首页 > 面试题库 >

Java:什么是 Java 的内存模型?

傅和璧
2023-04-24

在了解什么是 Java 内存模型之前,先了解一下为什么要提出 Java 内存模型。

之前提到过并发编程有三大问题

CPU 缓存,在多核 CPU 的情况下,带来了可见性问题
操作系统对当前执行线程的切换,带来了原子性问题
译器指令重排优化,带来了有序性问题
为了解决并发编程的三大问题,提出了 JSR-133,新的 Java 内存模型,JDK 5 开始使用。

简单总结下

Java 内存模型是 JVM 的一种规范
定义了共享内存在多线程程序中读写操作行为的规范
屏蔽了各种硬件和操作系统的访问差异,保证了 Java 程序在各种平台下对内存的访问效果一致
解决并发问题采用的方式:限制处理器优化和使用内存屏障
增强了三个同步原语(synchronized、volatile、final)的内存语义
定义了 happens-before 规则

 类似资料:
  • 问题内容: 我正在学习一本Spring书,他们提到了Java域模型。 那是什么? 问题答案: 域模型(该术语完全不是特定于Java的)是在问题域中对某些事物建模的类,而不是出于技术实现原因而存在的类。 域模型实例通常需要保存在数据库中,在Java中,它们通常符合Java Beans规范,即它们具有表示单个属性的get和set方法和无参数构造函数。Spring和其他框架允许您直接在JSP中访问这些属

  • 规范了Java虚拟机与计算机内存是如何协调工作的,规定了一个线程如何及何时能看到其他线程修改过的共享变量,在必须时如何同步地访问共享变量,控制线程本地内容和共享内容之间的同步。 2. 同步八种操作 操作 定义 lock(锁定) unlock(解锁) read(读取) load(载入) use(使用) assign(赋值) store(存储) write(写入) 3. 同步规则 Read和Load之

  • 本文向大家介绍请问什么是JVM内存模型?相关面试题,主要包含被问及请问什么是JVM内存模型?时的应答技巧和注意事项,需要的朋友参考一下 考察点:JVM内存模型 Java内存模型(简称JMM),JMM决定一个线程对共享变量的写入何时对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(l

  • 尝试查找这个,但是我遇到的所有问题/答案都谈到了拥有2个幸存者空间的目的。我想了解拥有幸存者空间的一般目的。将物体从伊甸园移动到幸存者有什么好处?

  • 问题内容: 我正在接管以前的开发人员的一些应用程序。当我通过Eclipse运行应用程序时,我看到内存使用率和堆大小增加了很多。经过进一步调查,我发现他们正在循环创建一个对象以及其他东西。 我开始经历并做一些清理。但是,我经历的时间越长,我就会遇到更多的问题,例如“这实际上会做什么?” 例如,他们没有在上述循环之外声明变量,而只是在循环中设置其值…而是在循环中创建了对象。我的意思是: 与 我不正确地

  • 我理解JVM如何从OS提供的可用本机堆中创建java堆。