想要成为一个合格的JAVA程序员,那么必须了解JVM内存结构。

这篇文章从亿图图示模板社区中整理了各行业用户分享的JVM内存结构图,有简略的,也有详细的,文末也对JVM的基础概念进行了整理归纳,相信对刚入门的小伙伴会有一定的帮助。

JVM内存结构图合集

java visualvm分析内存快照 jvm内存图_big data

java visualvm分析内存快照 jvm内存图_big data_02

源文件传送门>>>Jvm内存模型 - 在线模板社区https://www.edrawmax.cn/templates/file/1011253

java visualvm分析内存快照 jvm内存图_big data_03

源文件传送门>>>JVM内存模型 - 在线模板社区

java visualvm分析内存快照 jvm内存图_JVM_04

源文件传送门>>>JVM体系结构 - 在线模板社区

java visualvm分析内存快照 jvm内存图_面试_05

源文件传送门>>>java内模型 - 在线模板社区

JVM基础概念整理

如果理解了前面几张图,JVM的内存结构基本掌握了一半。不难看出,JVM内存由五部分组成,分别为程序计数器、虚拟机栈、本地方法栈、方法区、堆。

1)程序计数器(线程私有,无GC,Garbage Collection):指向当前线程正在执行的字节码的地址、行号。

2)虚拟机栈(线程私有,无GC):存储当前线程运行方法所需要的数据、指令、返回地址。每一个方法都对应一个栈帧,可以通过配置Xss来配置栈帧的大小。

3)本地方法栈(线程私有,无GC):和虚拟机栈类似。不同的是,本地方法栈存储的是本地方法的数据。

4)方法区(线程共享):被所有方法线程共享的一块内存区域。用于存储已经被虚拟机加载的类信息、常量、静态变量等。这个区域的内存回收目标主要针对常量池的回收和堆类型的卸载。

5)Java 堆(线程共享,要GC):被所有线程共享的一块内存区域,在虚拟机启动的时候创建,用于存放对象实例。一个JVM实例只有一个堆内存。

最后,附上一张jvm基础概念整理图

java visualvm分析内存快照 jvm内存图_面试_06

图片模糊的话,可以点击图片“查看原图”,或者直接点击下方源文件查看高清大图▼

java jvm 基础概念整理归纳https://link.zhihu.com/?target=https%3A//www.edrawmax.cn/templates/file/1014383