jvm内存模型
一、简要模型
- 在jdk1.8之前
- jdk1.8之后
- 两个版本之间的区别
- 元数据区取代了永久代的方法区。元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元数据空间并不在虚拟机中,而是使用本地内存。
二、各区域详细介绍
1. 程序计数器
- 一块较小的内存空间, 是当前线程所执行的字节码的行号指示器,为了线程切换后都能恢复到正确的执行位置,每条线程都要有一个独立的 程序计数器,这类内存也称为“线程私有”的内存。
- 正在执行 java 方法的话,计数器记录的是虚拟机字节码指令的地址(当前指令的地址)。如 果还是Native方法,则为空。
- 这个内存区域是唯一一个在虚拟机中没有规定任何OutOfMemoryError情况的区域。
2. java虚拟机栈
- 是描述java方法执行的内存模型&#x