作用
java虚拟机就是二进制字节码的运行环境
位置
1、jvm是运行在操作系统上的,与硬件没有直接的交互
2、jdk中包含有前端编译器javac,jre中没有
java代码执行流程
1、在编译过程中,任一步骤失败则不能生成字节码文件
2、操作系统不识别字节码指令,只识别机器指令
3、在jvm中,经过类加载器、字节码校验器、执行引擎
4、执行引擎中有解释执行(保证响应事件)、JIT编译器(热点代码再编译成机器指令)。
jvm架构模型
栈的指令集架构
1、jvm即为该类
2、设计和实现简单,适用于资源受限的系统
3、避开了寄存器的分配难题,只用领地址指令方式分配
4、操作过程依赖操作栈。指令集更小,编译器容易实现
5、可移植性好、不需要硬件支持,更好的跨平台
寄存器的指令集架构、
1、x86指令集:pc与Android
2、指令集以一、二、三地址指令为主
3、依赖硬件,可移植性差
4、性能优秀和执行更高效
jvm生命周期
虚拟机启动
通过引导类加载器(BootStrap class loader)创建一个初始类(initial class)来完成的,该类有虚拟机的具体实现来指定的
虚拟机运行
1、一个运行中的Java虚拟机有这一个清晰的任务:执行java程序。
2、程序开始执行时他才运行,程序结束时他就停止。
3、执行一个所谓的java程序的时候,真真正正在执行的是一个叫做java虚拟机的进程。
虚拟机退出
1、程序正常执行 退出
2、程序在执行过程中遇到异常或错误而异常终止
3、操作系统错误导致
4、Runtime类的halt方法,或者System.exit方法