java程序运行原理 JVM(运行时数据区) JRE JDK
# java程序运行原理
## jvm 内部结构
类加载器
执行引擎
运行时数据区
本地方法接口
## JVM运行时数据区
![image.png](https://cos.easydoc.net/31477061/files/klxtsyxn.png)
### 方法区
![image.png](https://cos.easydoc.net/31477061/files/klxuzq2c.png)
![image.png](https://cos.easydoc.net/31477061/files/kly2nfdo.png)
---
### 堆内存
![image.png](https://cos.easydoc.net/31477061/files/klxyd2pv.png)
---
### 虚拟机栈
![image.png](https://cos.easydoc.net/31477061/files/klxzmkl5.png)
![image.png](https://cos.easydoc.net/31477061/files/klynt170.png)
![image.png](https://cos.easydoc.net/31477061/files/klyo2ajc.png)
---
### 程序计数器
![image.png](https://cos.easydoc.net/31477061/files/klxzpu0i.png)
---
### 本地方法栈
![image.png](https://cos.easydoc.net/31477061/files/klxzn8k1.png)
---
### 查看class文件内容
![image.png](https://cos.easydoc.net/31477061/files/kly1sf4m.png)
## JVM指令码表
[JVM指令码表](https://blog.csdn.net/w873264631/article/details/100163158)
## JDK、JRE、JVM区别与联系
### 一、JDK
JDK(Java Development Kit) 是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。JDK是java开发工具包
JDK包含JRE,而JRE包 含JVM。
---
### 二、JRE
JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及Java核心类库。JRE是Java运行环境,
光有JVM还不能成class的 执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。 (jre里有运行.class的java.exe)
JRE ( Java Runtime Environment ),是运行 Java 程序必不可少的,JRE的 地位就象一台PC机一样,我们写好的Win64应用程序需要操作系统帮 我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。
---
### 三、JVM
JVM(Java Virtual Machine),即java虚拟机, java运行时的环境,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。针对java用户,也就是拥有可运行的.class文件包(jar或者war)的用户。里面主要包含了jvm和java运行时基本类库(rt.jar)。rt.jar可以简单粗暴地理解为:它就是java源码编译成的jar包。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。