JVM内存结构VSJava内存模型及Java并发底层原理
文章平均质量分 90
第一: JVM 内存结构和 Java 虚拟机的运行时区域有关;
第二: Java 内存模型和 Java 的并发编程有关。
Ssssongsmith 奕飞
这个作者很懒,什么都没留下…
展开
-
62-volatile 的作用是什么?与 synchronized 有什么异同?
volatile 是什么 首先我们就来介绍一下 volatile,它是 Java 中的一个关键字,是一种同步机制。当某个变量是共享变量,且这个变量是被 volatile 修饰的,那么在修改了这个变量的值之后,再读取该变量的值时,可以保证获取到的是修改后的最新的值,而不是过期的值。 相比于 synchronized 或者 Lock,volatile 是更轻量的,因为使用 volatile 不会发生上下文切换等开销很大的情况,不会让线程阻塞。但正是由于它的开销相对比较小,所以它的效果,也就是能力,相对也小一些。原创 2021-02-08 13:34:36 · 209 阅读 · 3 评论 -
60-主内存和工作内存的关系?
CPU 有多级缓存,导致读的数据过期 由于 CPU 的处理速度很快,相比之下,内存的速度就显得很慢,所以为了提高 CPU 的整体运行效率,减少空闲时间,在 CPU 和内存之间会有 cache 层,也就是缓存层的存在。虽然缓存的容量比内存小,但是缓存的速度却比内存的速度要快得多,其中 L1 缓存的速度仅次于寄存器的速度。结构示意图如下所示: 在图中,从下往上分别是内存,L3 缓存、L2 缓存、L1 缓存,寄存器,然后最上层是 CPU 的 4个核心。从内存,到 L3 缓存,再到 L2 和 L1 缓存,它们距离原创 2021-02-05 20:22:27 · 272 阅读 · 0 评论 -
59-什么是“内存可见性”问题?
我们先从两个案例来入手,看一看什么是可见性问题。 案例一 我们来看看下面的代码,有一个变量 x,它是 int 类型的,如下所示: public class Visibility { int x = 0; public void write() { x = 1; } public void read() { int y = x; } } 这是一段很简单的代码,类中有两个方法: write 方法,作用是给 x 赋值,代码中,把 x 赋值原创 2021-02-05 09:03:55 · 788 阅读 · 3 评论 -
56-什么是 Java 内存模型?
了解 Java 并发的底层原理,那么 Java 内存模型的知识非常重要,同时也是一个分水岭,可以区分出我们是仅停留在如何使用并发工具,还是能更进一步,知其所以然。 容易混淆:JVM 内存结构 VS Java 内存模型 Java 作为一种面向对象的语言,有很多概念,从名称上看起来比较相似,比如 JVM 内存结构、Java 内存模型,这是两个截然不同的概念,但是很容易混淆。网络上也有不少讲 Java 内存模型的文章,其实写的是 JVM 内存结构。 所以我们就先从整体上概括一下这两者的主要作用: JVM 内存原创 2021-02-01 21:21:59 · 191 阅读 · 0 评论