JVM---概述
/**
* 【虚拟机】
* Virtual Machine;
* 虚拟的计算机;
* 一款软件;
*
* 作用:
* 执行一系列虚拟计算机指令;
* 分类:
* 系统虚拟机:
* VMware...;
* 对物理计算机的仿真,提供 一个可运行完整操作系统的软件平台;
* 模拟硬件环境;
*
* 程序虚拟机;
* JVM...;
* 专门为执行单个计算机程序设计;
* 硬件->OS->JVM
*/
/**
* 【JVM-概述】
* 作用:
* JVM就是 二进制字节码 的运行环境;
* JVM负责 load字节码到其内部,解释/编译为 对应平台上的 机器指令执行;
* 特点:
* 一次编译,到处运行;
* 自动内存管理;
* 自动垃圾回收;
*
* 位置:
* 硬件->OS->JVM
*/
/**
* 【JVM-整体结构】
* 类加载器子系统
* 运行时数据区
* 执行引擎
*/
/**
* 【JVM-架构模型】
* 指令集架构:
* 基于栈的指令集架构;
* 使用 零地址指令 分配;
* 只包含 操作数(地址 + 操作数)
* 指令集更小,但同样的操作指令多;
* 2+3 字节码指令:
* iconst_2
* istore_1
* iconst_3
* istore_2
* iload_1
* iload_2
* iadd
* istore_0
* 不需要硬件支持,移植性更好;
*
* 基于寄存器的指令集架构;
* 性能优秀、执行高效;
* 指令更少;
* 2+3 寄存器指令:
* mov eax,2
* add eax,3
* 指令集依赖硬件,移植性差;
*
*/
/**
* 【JVM-生命周期】
* 启动:
* 通过 引导类加载器(bootstrap class loader)创建一个初始类(init class)来完成的,这个初始类 由JVM的具体实现指定;
*
* 执行:
* 一个运行中的JVM有着一个清晰的任务:执行程序;
* 程序 开始执行时 JVM允许,程序结束 JVM结束;
* 执行一个 程序时,其实执行的是 一个JVM进程;
*
* 退出:
* 程序正常结束;
* 程序执行过程中遇到异常或错误终止;
* 由于OS异常导致JVM进程终止;
* 某个线程调用 Runtime 或 System的exit方法;
* ...
*/
/**
* 【JVM-Hotspot】
* Oracle JDK 与 OpenJDK 都默认 Hotspot;
*/