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

    你可能感兴趣的文章
    nrf开发笔记一开发软件
    查看>>
    NSDateFormatter的替代方法
    查看>>
    nsis 安装脚本示例(转)
    查看>>
    NSOperation基本操作
    查看>>
    NSSet集合 无序的 不能重复的
    查看>>
    NT AUTHORITY\NETWORK SERVICE 权限问题
    查看>>
    NT symbols are incorrect, please fix symbols
    查看>>
    ntko web firefox跨浏览器插件_深度比较:2019年6个最好的跨浏览器测试工具
    查看>>
    ntko文件存取错误_苹果推送 macOS 10.15.4:iCloud 云盘文件夹共享终于来了
    查看>>
    NTP配置
    查看>>
    Nuget~管理自己的包包
    查看>>
    nullnullHuge Pages
    查看>>
    Numix Core 开源项目教程
    查看>>
    NumPy 或 Pandas:将数组类型保持为整数,同时具有 NaN 值
    查看>>
    numpy 数组 dtype 在 Windows 10 64 位机器中默认为 int32
    查看>>
    numpy 用法
    查看>>
    Numpy 科学计算库详解
    查看>>
    Numpy如何使用np.umprod重写range函数中i的python
    查看>>
    numpy数组索引-ChatGPT4o作答
    查看>>
    oauth2-shiro 添加 redis 实现版本
    查看>>