一、什么是JVM
JVM,全称Java Virtual Machine, Java虚拟机,是Java程序的运行环境(Java二进制字节码.class的运行环境)。
优点:
- 跨平台语言的。一次编码,到处运行。
- 自动内存管理,垃圾回收功能。
- 数组下标越界检查,越界时会抛出异常。 比如C语言,没有数组下标越界检查,如果发生越界,会占用其他内存,可能覆盖其中的数据。这是不可容忍的。
- 多态:JVM内部使用区方法表的机制实现多态。
比较:JVM JRE JDK
JRE: Java Runtime Environment(Java运行时环境)
JDK:Java Development Kit(Java开发工具包)
JavaSE:Java Stantard Edition(Java标准版)
JavaEE:Java Enterprise Edition(Java企业版)
二、文件执行流程
- Java源文件经过编译后生成.class文件。
- ClassLoad加载.class文件到JVM中运行。
- Method Area中存放类。
- Heap中存放类创建的实例对象。
- JVM Stacks提供了线程运行时需要的内存空间。
- 实例对象调用方法时会用到JVM Stacks,PC Register, Native Method Stacks。
- 方法执行时,由执行引擎中的Interpreter逐行将.class文件中的JVM指令解释成机器码,然后才能交由CPU执行。
- 热点代码(即频繁执行的代码)由JIT Compiler优化编译。
- GC回收Heap中无引用的对象。
- 借助本地方法接口调用操作系统的功能方法。