博客
关于我
JVM 学习笔记一、JVM与Java体系结构
阅读量:623 次
发布时间:2019-03-12

本文共 1155 字,大约阅读时间需要 3 分钟。

JVM与Java体系结构

汇编语言、机器语言、高级语言关系

汇编语言是机器语言的中间层,它们通过interpreters(解释器)将高级语言代码转换为机器指令。Java作为一个高度抽象的高级语言,其特性使其能够脱离特定的机器指令体系,依赖Java虚拟机(JVM)来执行其语伤。

Java 的特性

Java的跨平台特性确保了它在任何运行环境中都能运行。这一特性得到了进一步的拓展,Java不再局限于自己的语言环境,通过JSR-292规范,其虚拟机会支持非Java语言编写的程序运行。

Java的自动垃圾回收和内存管理机制为开发者大幅度减轻了内存管理的负担,这也是Java程序能够在较大的堆空间中高效运行的重要原因。

Java代码执行过程详图

JAVA程序通过编译器转换为字节码文件,其执行则依赖于Java虚拟机。 java文件经过转换成字节码后,JVM将其解码并执行,具体过程可通过以下步骤理解:

  • 字节码文件被JVM加载到方法区中。
  • J mlx解码器将字节码转换为本地机器指令。
  • 指令由底层处理单元执行。
  • 虚拟机

    虚拟机可以分为两种类型:system virtualization和program virtualization。

    • System virtualization: 类似于VMware,提供对整个计算环境的仿真。
    • Program virtualization: 专注于运行单一程序,JVM负责Java字节码的解释与执行。

    JVM的主要目标是为Java程序提供标准化的运行环境,通过统一的指令集实现跨平台性。

    JVM的架构模型

    JVM的架构决定了其实现方式,主要包括指令系统和栈式结构。

  • 指令系统: JVM指令采用零地址格式,操作数是栈顶元素,从而简化了内存管理。
  • 栈式架构: 虚拟机栈的形式实现指令效率较低,但更适合移植性。
  • 寄存器架构: 采用一地址指令,提升执行效率,但难以跨平台。
  • JVM反编译

    javap工具可以用于反汇编Java字节码,提供关于方法和变量的详细信息。用户可通过以下命令进行操作:

    • -c选项反向汇编字节码。
    • -v选项提供附加信息。
    • -l选项显示本地变量表和行号信息。
    • -p选项展示类和成员信息。

    JVM的生命周期

  • 启动阶段: 类加载器创建初始类,线程执行初始化方法,类初始化完成后,项目开始正常运行。
  • 执行阶段: 按照字节码指令执行,线程处理异常时可能终止或暂停。
  • 退出阶段: 通过不同的方式终止,包括程序结束、错误或系统命令。
  • JVM整体架构

    JVM主要包含以下组成部分:

  • 类加载子系统: 负责加载字节码到方法区。
  • 执行引擎: 解码字节码并执行。
  • 本地接口: 与外部资源交互的接口。
  • 运行流程可总结为:编译器将Java代码转换成字节码,JVM将其加载和解释,最终由执行引擎执行。

    转载地址:http://pswaz.baihongyu.com/

    你可能感兴趣的文章
    ORA-00932: inconsistent datatypes: expected - got NCLOB【ORA-00932: 数据类型不一致: 应为 -, 但却获得 NCLOB 】【解决办法】
    查看>>
    ORA-00942 表或视图不存在
    查看>>
    ORA-01034: ORACLE not available
    查看>>
    ORA-01152: 文件 1 没有从过旧的备份中还原
    查看>>
    ORA-01207:文件比控制文件更新 - 旧的控制文件
    查看>>
    ORA-01795: 列表中的最大表达式数为 1000
    查看>>
    ORA-06575: 程序包或函数 NO_VM_DROP_PROC 处于无效状态
    查看>>
    ORA-08102的错误
    查看>>
    ORA-12505, TNS:listener does not currently know of SID given in connect descriptor异常
    查看>>
    ORA-12514: TNS:listener does not currently know of service问题原因
    查看>>
    ora-12541:tns:no listener
    查看>>
    【docker知识】联合文件系统(unionFS)原理
    查看>>
    ORACEL学习--理解over()函数
    查看>>
    ORAchk-数据库健康检查
    查看>>
    oracle 10g crs命令,Oracle 10g CRS安装问题解决一例
    查看>>
    Oracle 10g ORA-01034: ORACLE not available 错误
    查看>>
    oracle 10g的安装配置
    查看>>
    Oracle 11.2.0.4 x64 RAC修改public/private/vip/scan地址
    查看>>
    Oracle 11G INDEX FULL SCAN 和 INDEX FAST FULL SCAN 对比分析
    查看>>
    viewpage listview gridview加载本地大图多图OOM处理办法
    查看>>