最常用的JVM是:Oracle HotSpot (热点)
Java 虚拟机在执行 Java 程序的过程中会把他所管理的内存划分为若干个不同的数据区域。Java 虚拟机规范将 JVM 所管理的内存分为以下几个运行时数据区:程序计数器、Java 虚拟机栈、本地方法栈、Java 堆、方法区。
Java 虚拟机运行时数据区
Java虚拟机中若干种程序运行期间会使用到的存储不同类型数据的区域。
有一些区域是全局共享的,随着虚拟机启动而创建,随着虚拟机退出而销毁。有一些区域是线程私有的,随着线程开始和结束而创建和销毁。
是所有 Java 虚拟机共同的内存区域概念模型
运行时数据区的划分
a> 程序计数器
b> Java 堆
c> Java 虚拟机栈
d> 本地方法栈
e> 方法区
<>程序计数器(Program Counter Register)
一块较小的的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器。
如果线程正在执行的是一个 Java 方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是 Native 方法,这个计数器值则为空。
此内存区域是唯一一个在 Java 虚拟机规范中没有规定任何 OutOfMemoryError情况的区域。