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

    你可能感兴趣的文章
    Parrot OS 6.3 发布!全面提升安全性,新增先进工具,带来更高性能
    查看>>
    ParseChat应用源码ios版
    查看>>
    Part 2异常和错误
    查看>>
    Pascal Script
    查看>>
    Spring Boot中的自定义事件详解与实战
    查看>>
    Spring Boot(七十六):集成Redisson实现布隆过滤器(Bloom Filter)
    查看>>
    passwd命令限制用户密码到期时间
    查看>>
    Spring @Async执行异步方法的简单使用
    查看>>
    PAT (Basic Level) Practice 乙级1031-1040
    查看>>
    PAT (Basic Level) Practice 乙级1041-1045
    查看>>
    PAT (Basic Level) Practice 乙级1051-1055
    查看>>
    PAT (Basic Level) Practise - 写出这个数
    查看>>
    PAT 1027 Colors in Mars
    查看>>
    PAT 1127 ZigZagging on a Tree[难]
    查看>>
    PAT 2-07. 素因子分解(20)
    查看>>
    SparkSQL学习03-数据读取与存储
    查看>>
    PAT L2-012. 关于堆的判断
    查看>>
    PAT Spell It Right [非常简单]
    查看>>
    PAT-1044. Shopping in Mars (25)
    查看>>
    PAT-乙级-1040 有几个PAT
    查看>>