我是蚊子码农,本次将为大家介绍JVM的五大内存区划分。
一、主题概括
对于操作系统来说,Java虚拟机只是一个普通应用程序,所以操作系统会给它分配一块内存。
为了更方便地构建Java程序结构和管理内存,JVM将这块内存又细分成了5个部分。
分别是堆区Heap、虚拟机栈VM Stack、本地方法栈Native Method Stack、方法区Method Area和程序计数器Programming Counter。
本文主要介绍这些内存的功能、异常,也会提及外界功能的交互。
二、功能介绍
本节内容,介绍每个内存的主要功能。
- 程序计数器PC:辅助执行引擎,执行下一条字节码指令。
- 虚拟机栈VM Stack:帮助Java方法的执行。
- 本地方法栈NM Stack:帮助本地方法的执行。【本地方法,即C、C++方法】
- 堆区Heap:管理几乎所有对象实例和数组。
- 方法区Method Area:存储类定义信息。【即,class文件中的信息】
三、程序计数器Programming Counter
- 作用:完成“程序控制”这一工作,实现分支、循环、跳转、异常处理、线程恢复等基础功能;
- 工作内容:通过改变值,得到下一条执行的字节码指令,从而使执行引擎能够正确执行指令;
- 线程私有:原因在下面;
- 异常:无(未定义);
在JV