一、JVM逻辑内存模型
JVM内存结构(Java内存结构) VS Java内存模型 VS Java对象模型
https://www.hollischuang.com/archives/2509
JVM内存结构:与Java虚拟机的运行时区域有关
Java内存模型:与java的并发编程有关
并发编程: 原子性指在一个操作中CPU不可以在中途暂停然后在调度,一个操作要么成功要么失败
可见性指当多个线程访问同一个变量时,一个现象修改了变量的值,其他线程能够立即看到修改的值
有序性即程序执行的顺序按照代码的先后顺序
Java对象模型:和Java对象在虚拟机中的表现形式有关
二、 JVM内存结构(jdk1.8)
2.1 程序计数器(线程私有)
概念: 程序计数器是一个记录着当前线程所执行的字节码的行号指示器
为什么要用: 需要清楚JVM的多线程实现方式,JVM的多线程是通过CPU时间片轮转(即线程轮流切换并分配处理器的执行实践)算法来实现。
也就是说某个线程可能在执行过程中由于时间片耗尽而被挂起,另一个线程获取时间片开始执行。
这个时候就需要程序计数器来记录执行的位置,才能在被挂起后分配到时间片后继续执行