深入理解 Java 虚拟机 (二)
Java内存模型
主内存与工作内存
- 所有的变量存储在主内存(虚拟机内存的一部分)
- 每条线程有自己的工作内存,线程对变量的所有操作(读取、赋值)都必须在工作内存中进行、不能直接读写主内存中的数据。
- 不同的线程无法直接访问对方工作内存中的变量。
内存间交互操作
- 在
Java
中,内存之间的交互操作通常是通过对象的引用来实现的。当一个对象被创建时,它被存储在堆内存中,并且在栈内存中分配一个引用指向该对象。通过这个引用,可以访问和操作对象的数据和方法。
8种基本操作
-
lock
:锁定,作用于主内存变量,它把一个变量标识为一条线程独占的状态。 -
unlock
:解锁,解锁后的变量才能被其他线程锁定。 -
read
:读取,作用于主内存变量,它把一个主内存变量的值,读取到工作内存中。 -
load
:载入,作用于工作内存变量,它把read
读取的值,放到工作内存