博客
关于我
我所知道JVM虚拟机之执行引擎
阅读量:208 次
发布时间:2019-02-28

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

前言

从本篇开始,我们将深入探讨Java虚拟机(JVM)的核心组成部分之一——执行引擎。通过这篇文章,读者将了解执行引擎的工作原理、Java代码的编译与执行过程,以及如何通过解释器和即时编译器(JIT)优化程序性能。

一、执行引擎概述

执行引擎是Java虚拟机(JVM)的核心组成部分之一。与物理机的执行引擎不同,JVM的执行引擎是软件实现的,能够自定义指令集,从而支持不被硬件直接支持的指令格式。

JVM的主要任务是将字节码转换为本地机器指令。字节码不能直接在操作系统上运行,因为它包含的是JVM识别的指令、符号表和其他辅助信息。因此,执行引擎的任务是将字节码指令解释或编译为对应平台的本地机器指令,充当将高级语言翻译为机器语言的译者。

二、Java代码编译和执行过程

Java程序的执行过程通常包括以下步骤:

  • 编译阶段:Java编译器(javac)将源代码编译成字节码文件。这是前端编译过程,与JVM无关。
  • 解释与即时编译阶段:JVM在运行时将字节码解释为本地机器指令,或通过即时编译器(JIT)将字节码直接编译为机器指令。
  • 三、机器码、指令、汇编语言

  • 机器码:一种仅由0和1组成的二进制指令,直接供CPU执行。
  • 指令:为了提高可读性,机器码被抽象为指令,如“mov”、“inc”等。不同硬件平台支持的指令集不同。
  • 汇编语言:通过助记符和地址符号进一步提高可读性,汇编语言需要翻译为机器指令后才能执行。
  • 四、字节码

    字节码是一种中间状态的二进制代码,需要直译器将其翻译为机器码。它与硬件环境无关,主要用于Java虚拟机。

    五、解释器

    解释器是JVM的核心组件,负责将字节码逐行解释为本地机器指令。这种方式避免了静态编译,实现了跨平台特性。

    六、JIT编译器

    JIT编译器(Just In Time Compiler)将字节码直接编译为机器码,以提升执行效率。HotSpot VM通常采用解释器和JIT编译器的混合模式,解释器用于快速启动,JIT用于高性能执行。

    七、HotSpotVM的执行方式

    HotSpot VM在运行时,解释器和JIT编译器协作,解释器首先发挥作用,随后JIT根据热点探测结果进行编译优化。

    八、案例分析

    在生产环境中,JVM的启动方式会影响性能。了解JIT和解释器的协作机制,有助于优化应用程序的启动和运行效率。

    九、JIT编译器相关概念

  • C1和C2编译器:C1编译器优化简单可靠,C2编译器进行深度优化。
  • 热点探测:通过计数器和回边计数器,确定哪些代码需要优化。
  • 十、HotSpotVM JIT分类

    HotSpot VM内置C1和C2编译器,支持根据需要选择编译器策略。

    十一、AOT编译器

    AOT编译器(Ahead of Time Compiler)将Java代码预编译为机器码,减少“第一次运行慢”问题,但需要为不同环境编译。

    十二、Graal编译器

    Graal编译器是HotSpot VM的新兴即时编译器,目标是超越C2编译器性能。


    本文通过对执行引擎、解释器、JIT编译器等关键技术的详细介绍,帮助读者理解Java虚拟机的运行机制及其性能优化方法。

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

    你可能感兴趣的文章
    OSPF技术连载7:什么是OSPF带宽?OSPF带宽参考值多少?
    查看>>
    OSPF技术连载8:OSPF认证:明文认证、MD5认证和SHA-HMAC验证
    查看>>
    OSPF故障排除技巧
    查看>>
    spring配置文件中<context:property-placeholder />的使用
    查看>>
    OSPF有哪些优势?解决了RIP的什么问题?
    查看>>
    OSPF理论
    查看>>
    OSPF的七种类型LSA
    查看>>
    OSPF的安全性考虑:全面解析与最佳实践
    查看>>
    OSPF知识点大全,网络工程师快速收藏!
    查看>>
    ospf综合实验2 2012/9/8
    查看>>
    OSPF规划两大模型:双塔奇兵、犬牙交错
    查看>>
    OSPF认证
    查看>>
    OSPF设计原则,命令以H3C为例
    查看>>
    ospf路由 华3_动态路由OSPF基本原理及配置,一分钟了解下
    查看>>
    OSPF路由协议配置
    查看>>
    OSPRay 开源项目教程
    查看>>
    VC++实现应用程序对插件的支持
    查看>>
    OSS 访问图片资源报“No ‘Access-Control-Allow-Origin‘”的错误
    查看>>
    ossfs常见配置错误
    查看>>
    Ossim4系统故障处理
    查看>>