JVM概述

1. 框架

本质:跨语言的平台,运行字节码文件的虚拟计算机,只关心字节码文件是不是符合规范

特点:

  • 一次编译到处运行
  • 自动内存管理
  • 自动垃圾回收

位置:运行在操作系统之上

2. 架构模型

跨平台特性要求使用栈

  • 基于栈式架构
    • 零地址分配
    • 不需要硬件支持,一移植性好
  • 基于寄存器
    • 需要硬件支持
    • 指令集大(16位),指令少

3. 生命周期

3.1. 启动

引导类加载器创建初始类

3.2. 执行

程序开始到程序结束

3.3. 退出

  • 程序结束
  • 异常错误
  • 操作系统错误
  • 调用eixt方法、halt方法
  • JNI卸载JVM

4. 发展历程

  1. Sun Classic VM
    1. 只提供解释器,逐行解释效率低,
    2. 外挂JIT
    3. 只能二选一
  2. Exact VM
    1. 准确式内存管理:数据具体类型
    2. 编译器与解释器混合工作
    3. 热点探测
  3. HotSpot VM
    1. 默认虚拟机
    2. 热点代码即时编译、栈上替换
    3. 编译器与解释器协同工作
  4. BEA JRockit
    1. 专注于服务器端,不关注启动速度也就不含解释器
    2. 响应快
    3. 全套解决方案
  5. IBM J9
    1. 多用途
    2. 广泛用于IBM产品
  6. KVM和CDC/CLDC
    1. Java Me(诺基亚)
    2. 简单轻量,面向低端好
  7. Azul VM
    1. 特定硬件平台绑定
    2. Vega系统
    3. 高性能计算机
  8. Liquid VM
    1. 高性能计算机,
    2. 不需要操作系统支持
  9. Apache Harmony
    1. 安卓
  10. Microsoft JVM
  11. TaobaoJVM
  12. Dalvik VM
  13. Graal VM
相关推荐
就叫飞六吧几秒前
钉钉企业内部应用 SSO 免登集成实战 (Spring Boot 版)
java·spring boot·钉钉
世转神风-1 分钟前
qt-union-联合体基础讲解
开发语言·qt
moxiaoran57531 分钟前
Go语言的数据类型转换
开发语言·后端·golang
秋邱3 分钟前
Java包装类:基本类型与包装类转换、自动装箱与拆箱原理
java·开发语言·python
海上彼尚3 分钟前
Go之路 - 8.go的接口
开发语言·golang·xcode
乐茵lin4 分钟前
golang context底层设计探究
开发语言·后端·golang·大学生·设计·context·底层源码
lkbhua莱克瓦245 分钟前
基础-约束
android·开发语言·数据库·笔记·sql·mysql·约束
万邦科技Lafite8 分钟前
淘宝开放API获取订单信息教程(2025年最新版)
java·开发语言·数据库·人工智能·python·开放api·电商开放平台
CoderCodingNo9 分钟前
【GESP】C++五级真题(前缀和思想考点) luogu-P10719 [GESP202406 五级] 黑白格
开发语言·c++·算法
阿珊和她的猫9 分钟前
页面停留时长埋点实现技术详解
开发语言·前端·javascript·ecmascript