JVM内存模型
Java虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是:
1. 程序计数器
2. Java虚拟机栈
3. 本地方法栈
4. 堆
5. 方法区。
下面对这五个区域展开深入的介绍。
1. 程序计数器
1.1. 什么是程序计数器?
程序计数器是一块较小的内存空间,可以把它看作当前线程正在执行的字节码的行号指示器。也就是说,程序计数器里面记录的是当前线程正在执行的那一条字节码指令的地址。
注:但是,如果当前线程正在执行的是一个本地方法,那么此时程序计数器为空。
1.2. 程序计数器的作用
程序计数器有两个作用:
- 字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制,如:顺序执行、选择、循环、异常处理。
- 在多线程的情况下,程序计数器用于记录当前线程执行的位置,从而当线程被切换回来的时候能够知道该线程上次运行到哪儿了。
1.3. 程序计数器的特点
- 是一块较小的存储空间
- 线程私有。每条线程都有一个程序计数器。
- 是唯一一个不会出现OutOfMemoryError的内存区域。
- 生命周期随着线程的创建而创建&#x