JVM:JVM的内存结构

前言

今天开始JVM的学习,从JIVM的内存结构开始JVM之旅。

内存结构图

在这里插入图片描述

程序计数器:

容量:较小的内存空间
作用:当前线程所执行的行号指示器
说明:JAVA方法,则程序计数器的记录就是当前虚拟机字节码指令的地址。本地方法,则为空。
共享还是私有:线程私有,线程间互不影响

JAVA虚拟机栈:

作用:
每个方法在执行时会创建一个栈帧,一个方法的执行就是这个栈帧在虚拟机栈入栈出栈的过程。

说明:栈帧用于存储局部变量表、操作数栈、方法出口、动态链接

共享还是私有:线程私有

本地方法栈:

作用:
执行本地方法 native方法

共享还是私有:线程私有

容量:jvm中容量最大的区域
作用:用于存放实例化对象和数组,GC的主要区域
共享还是私有:共享
说明:堆可以是空间上不连续但是逻辑上连续的区域。

方法区

作用:存储已被虚拟机加载的类信息、常量、静态变量
共享还是私有:共享
说明:常被称为非堆,在GC分代机制中被划入永久代

运行时常量池

作用:存储编译器字面值常量、符号引用,也可以在运行期放数据到常量池,常用于String的intern
共享还是私有:共享
说明:认为是方法区的一部分。在JDK8开始,这一块区域放在元空间。

直接内存

作用:常用于NIO操作,NIO后面在学习
说明:直接内存不属于JAVA虚拟机的内存结构,不属于JVM管控,称之为堆外内存。

猜你喜欢

转载自blog.csdn.net/qq_28605513/article/details/84996629