一、JVM是什么?

  • 定义:
    Java Virtual Machine - java程序的运行环境 (Java 二进制字节码的运行环境)
    比如 Helloworld.java 程序通过javac编译成了 class字节码然后被加载到java虚拟机中运行。
  • 好处:
    1. 跨平台实现的基石。 Java程序一次编译,到处运行,JVM屏蔽了字节码和底层操作系统之间的差异,使得编译后的二进制字节码文件能够运行在不同的操作系统平台上。
    2. 自动内存管理,垃圾回收功能
    3. 数组下标越界越界检查
    4. 多态
  • 比较(jre、jdk、jvm):
    在这里插入图片描述
    jre:java runtime environment(Java运行时环境) jvm结合一些基础类库构成了jre;
    jdk:java development kit(Java 开发工具包) jvm+基础类库+编译工具构成 jdk;

二、常见的JVM

在这里插入图片描述

三、学习路线

在这里插入图片描述
重点:

  • JVM主要涉及三大块: 类加载器ClassLoader、JVM内存结构(方法区、堆、虚拟机栈、本地方法栈、程序计数器)、执行引擎(解释器、即时编译器、垃圾回收)
  • 一个java程序通过编译为二进制字节码文件,但是字节码文件必须通过类加载器ClassLoader 才能成功加载到JVM中去执行。方法区存放是的java类;堆存放的是类实例化的对象;当对象调用方法时会使用到虚拟机栈、本地方法栈、程序计数器;方法执行时是由执行引擎的解释器逐行解释执行的,方法里的热点代码(频繁调用)会被JIT Compiler即时编译器优化后执行;GC会对堆中一些不再引用的对象进行回收。Java还有一些方法需要调用底层操作系统相关方法,通过本地方法接口实行。