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的能够“一次编译,到处运行”的原因。