JVM基础知识
JVM基础
Java程序的执行过程
一个java程序首先经过javac编译成 .class 文件,然后 JVM 将其加载至方法区,执行引擎将会执行这些字节码。执行时,会翻译成操作系统相关的函数。JVM作为 .class 文件的翻译存在,解释字节码,调用操作系统函数
java虚拟机(Java Virtual Machine)可以识别 .class 后缀的文件,并且能够解析它的指令,最终调用操作系统上的函数,完成我们想要的操作。
过程如下:Java 文件 -> 编译器 -> 字节码 -> JVM -> 机器码
JVM是一个虚拟化的操作系统,类似于Linux或者Windows的操作系统,只是它架在操作系统上,接受字节码即 .class ,把字节码翻译成操作系统上的机器码且进行执行
- 跨语言(语言无关性)**:JVM只识别字节码,即与语言解耦。像Groovy,Kotlin,Scale等语言,其实也是编译成字节码,所以它们也可以在JVM上跑
JVM的内存区域
Java方法的运行与虚拟机栈
每个方法对应一个栈帧,虚拟机栈用于存储当前线程运行方法所需的数据,指令,返回地址