【专栏目录】
JVM底层原理分析:1.JDK体系、JVM架构和运行时数据区
JVM底层原理分析:2.堆内存分析和JVM调优
1.JDK体系结构
【组成部分】
组件 | 说明 |
---|---|
Java基础命令 | 如java、javac、javadoc等 |
JRE(Java运行时环境) | 由各个组件组成,如JDBC、JVM等 |
【如图】
2.JVM内部结构
【组成部分】
组件 | 说明 |
---|---|
类加载器 | 读取.class文件,并生成class对象,并将其加载到内存中 |
运行时数据区(内存模型) | 为生成的class对象提供的生存空间 |
字节码执行引擎 | 用于调用内存区中的class对象并执行代码逻辑,以及执行GC操作等 |
【如图】
3.运行时数据区内部结构
组件 | 说明 | 是否线程可共享 |
---|---|---|
Java栈 | 一个线程创建后拥有的独立内存空间,内部包括:局部变量表、操作数栈、动态链接、方法出口 | 否 |
本地方法栈 | Java底层的方法所占用的内存空间,比如public native start();,本地方法都是用C语言实现的 | 否 |
程序计数器 | 每个线程拥有一个程序计数器,用于保存当前线程执行的位置(实际上保存的就是汇编代码执行到第几行的地址),防止线程切换导致无法继续执行 | 否 |
堆 | new产生的对象所占用的内存空间 | 是 |
方法区(永久代、持久代、元空间) | 常量、静态变量、类信息所占用的内存空间 | 是 |
【如图,该图片来源于2020年最新Java虚拟机JVM底层原理分析视频教程全集,侵权立删】