1.1 📚 概述
📖定义
Java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/便于为对应平台上的机器指令执行。
🌠特点
- 一次编译,到处运行
- 自动内存管理
- 垃圾自动回收
🕵️Java代码的执行流程
🔰拓展
Java虚拟机不仅仅能用来解释Java语言。
JVM根本不关心运行在其内部的程序到底是何种语言编写的,它只关心“字节码”文件。
即JVM具有语言无关性,并不会单纯地与Java语言终身绑定,只要其他编程语言的编译结果满足并包含JVM的内部指令集、符号表以及其他的辅助信息,它就是一个有效的字节码文件,能够被JVM所识别、装载并运行。
Java并不是最强大的语言,但JVM是最强大的虚拟机。
1.2 📂 结构
📘说明
- HotSpot VM是目前市面上高性能虚拟机的代表作之一
- 它采用解释器与即时编译器并存的架构
📷JVM架构图
1.3 ⏳ 生命周期
🎏虚拟机的启动
Java虚拟机的启动是通过引导类加载器(Bootstrap Class Loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。
🎏虚拟机的执行
- 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序
- 程序开始执行时他才运行,程序结束时他就停止
- 执行一个所谓的Java程序的时候,真真正正在执行的是一个叫做Java虚拟机的进程
🎏虚拟机的退出
- 程序正常执行结束
- 程序在执行过程中遇到了异常或错误而异常终止
- 由于操作系统出现错误而导致Java虚拟机进程终止
- 某线程调用Runtime类或System类的exit方法,或Runtime类的halt方法,并且Java安全管理器也允许这次exit或halt操作
- 除此之外,JNI规范描述了用JNI Invocation API来加载或卸载Java虚拟机时,Java虚拟机的退出情况。