博客
关于我
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/

    你可能感兴趣的文章
    PLSQL中INDEX BY TABLE的 DELETE操作
    查看>>
    plsql学习笔记---plsql相关概念,以及基础结构
    查看>>
    plsql数据库异常---plsql 登录后,提示数据库字符集(AL32UTF8)和客户端字符集(ZHS16GBK)不一致
    查看>>
    plsql查询乱码问题解决
    查看>>
    PLSQL的DBMS_GETLINE
    查看>>
    quartz简单demo,教你最快使用quartz
    查看>>
    PlutoSDR学习笔记(一)—函数API手册
    查看>>
    Quartz安装包中的15个example
    查看>>
    Quartz学习总结(2)——定时任务框架Quartz详解
    查看>>
    pm2 start命令中的json格式详解
    查看>>
    pm2启动报错
    查看>>
    pm2通过配置文件部署nodejs代码到服务器
    查看>>
    Unknown character set: 'utf8mb4'
    查看>>
    PML调用PDMS内核命令研究
    查看>>
    PMM安装-第一篇
    查看>>
    PMP知识要点(第九章)
    查看>>
    PNETLab 镜像包官方下载太慢?不急,最新版本PNET_4.2.10分享!
    查看>>
    pnpm 如何安装指定版本
    查看>>
    pnpm的设计与npm的对比
    查看>>
    POCO库中文编程参考指南(4)Poco::Net::IPAddress
    查看>>