JVM---概述
虚拟机
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | /** * 【虚拟机】 * Virtual Machine; * 虚拟的计算机; * 一款软件; * * 作用: * 执行一系列虚拟计算机指令; * 分类: * 系统虚拟机: * VMware...; * 对物理计算机的仿真,提供 一个可运行完整操作系统的软件平台; * 模拟硬件环境; * * 程序虚拟机; * JVM...; * 专门为执行单个计算机程序设计; * 硬件->OS->JVM */ |
概述
1 2 3 4 5 6 7 8 9 10 11 12 13 | /** * 【JVM-概述】 * 作用: * JVM就是 二进制字节码 的运行环境; * JVM负责 load字节码到其内部,解释/编译为 对应平台上的 机器指令执行; * 特点: * 一次编译,到处运行; * 自动内存管理; * 自动垃圾回收; * * 位置: * 硬件->OS->JVM */ |
整体结构
1 2 3 4 5 6 | /** * 【JVM-整体结构】 * 类加载器子系统 * 运行时数据区 * 执行引擎 */ |
架构模型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | /** * 【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 * 指令集依赖硬件,移植性差; * */ |
基于栈(Stack-based)的指令集架构:
计算机处理器设计,它依赖于 内存中的数据栈 来存储和检索操作数;
在这种体系结构中,计算任务通常通过一系列对栈的操作来完成;
在基于栈的指令集中,操作数 不会直接出现在指令中,而是 由指令去访问栈顶或者栈中的特定位置来获取;
这样做的优点是可以减少指令长度,并且可以简化编译器的设计,因为编译器不需要关心具体的寄存器分配问题;
零地址指令(Zero Address Instruction):
一种机器指令;
特点:不包含操作数的地址字段。
这意味着在一条指令中,仅包含操作码(Opcode),而没有直接指定的操作数。
这并不意味着指令不需要任何操作数,而是操作数可能以某种隐含的方式提供或通过其他方式来获取 ;
在基于栈的体系结构中,操作数 通常位于内存中的数据栈上;
零地址指令 可以使用栈顶的数据作为操作数,或者执行对栈的操作,如入栈(PUSH)、出栈(POP)等;
生命周期
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /** * 【JVM-生命周期】 * 启动: * 通过 引导类加载器(bootstrap class loader)创建一个初始类(init class)来完成的,这个初始类 由JVM的具体实现指定; * * 执行: * 一个运行中的JVM有着一个清晰的任务:执行程序; * 程序 开始执行时 JVM允许,程序结束 JVM结束; * 执行一个 程序时,其实执行的是 一个JVM进程; * * 退出: * 程序正常结束; * 程序执行过程中遇到异常或错误终止; * 由于OS异常导致JVM进程终止; * 某个线程调用 Runtime 或 System的exit方法; * ... */ |
HotSpot
1 2 3 4 | /** * 【JVM-Hotspot】 * Oracle JDK 与 OpenJDK 都默认 Hotspot; */ |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2020-03-24 数学---基础概念
2020-03-24 数据结构---B树、B+树