7

Java 内存模型:海不辞水,故能成其深

 3 years ago
source link: https://kimmking.blog.csdn.net/article/details/108728981
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Java 内存模型:海不辞水,故能成其深

kimmking 2020-09-22 12:07:09 127
分类专栏: JVM 核心技术 32 讲

了解计算机历史的同学应该知道,计算机刚刚发明的时候,是没有内存这个概念的,速度慢到无法忍受。 直到冯诺依曼提出了一个天才的设计才解决了这个问题,没错,这个设计就是加了内存,所以现代的电子计算机又叫做“冯诺依曼机”。

JVM 是一个完整的计算机模型,所以自然就需要有对应的内存模型,这个模型被称为 “Java 内存模型”,对应的英文是“Java Memory Model”,简称 JMM

Java 内存模型规定了 JVM 应该如何使用计算机内存(RAM)。 广义来讲, Java 内存模型分为两个部分:

  • JVM 内存结构
  • JMM 与线程规范

其中,JVM 内存结构是底层实现,也是我们理解和认识 JMM 的基础。 大家熟知的堆内存、栈内存等运行时数据区的划分就可以归为 JVM 内存结构。

就像很多神书讲 JVM 开篇就讲怎么编译 JVM 一样,讲 JMM 一上来就引入 CPU 寄存器的同步机制。虽然看起来高大上、显得高深莫测,但是大家很难理解。

所以我们这节课先从基础讲起,避开生涩的一些过于底层的术语,学习基本的 JVM 内存结构。理解了这些基本的知识点,然后再来学习 JMM 和线程相关的知识。

6.1 JVM 内存结构

我们先来看看 JVM 整体的内存概念图:

JVM 内部使用的 Java 内存模型, 在逻辑上将内存划分为 线程栈(thread stacks)和堆内存 (heap)两个部分。 如下图所示:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK