`

关于java的JIT知识

阅读更多

刚看Practical java ,对jit不是很明白:搜索结果如下:

  

什么是JIT

JIT是just in time,即时编译技术。使用该技术,能够加速java程序的执行速度。下面,就对该技术做个简单的讲解。

首先,我们大家都知道,通常javac将程序源代码编译,转换成java字节码,JVM通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行速度必然会比可执行的二进制字节码程序慢。为了提高执行速度,引入了JIT技术。

在运行时JIT会把翻译过的机器码保存起来,已备下次使用,因此从理论上来说,采用该JIT技术可以,可以接近以前纯编译技术。下面我看看,JIT的工作过程。

JIT 编译过程

JIT编译启用时(默认是启用的),JVM读入.class文件解释后,将其发给JIT编译器。JIT编译器将字节码编译成本机机器代码,下图展示了该过程。

什么是JIT

JIT是just in time,即时编译技术。使用该技术,能够加速java程序的执行速度。下面,就对该技术做个简单的讲解。

首先,我们大家都知道,通常javac将程序源代码编译,转换成java字节码,JVM通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行速度必然会比可执行的二进制字节码程序慢。为了提高执行速度,引入了JIT技术。

在运行时JIT会把翻译过的机器码保存起来,已备下次使用,因此从理论上来说,采用该JIT技术可以,可以接近以前纯编译技术。下面我看看,JIT的工作过程。

JIT 编译过程

JIT编译启用时(默认是启用的),JVM读入.class文件解释后,将其发给JIT编译器。JIT编译器将字节码编译成本机机器代码,下图展示了该过程。


Graphic

 

通过上面的解释,我们了解了JIT的工作原理及过程,同样也发现了个问题,由于JIT对每条字节码都进行编译,造成了编译过程负担过重。为了避免这种情况,当前的JIT只对经常执行的字节码进行编译,如循环等。

需要说明的是,JIT并不总是奏效,不能期望JIT一定能够加速你代码执行的速度,更糟糕的是她有可能降低代码的执行速度。这取决于你的代码结构,当然很多情况下我们还是能够如愿以偿的。

评论

相关推荐

    java的JIT 工作原理简单介绍

    主要介绍了java的JIT 工作原理简单介绍的相关资料,需要的朋友可以参考下

    Java知识点总结.zip

    健壮性与高性能:Java通过垃圾回收机制确保内存的有效管理,同时也能通过JIT编译器优化来提升运行时性能。 标准库丰富:Java拥有庞大的类库,如Java SE(Java Standard Edition)包含基础API,用于开发通用应用...

    Java 排序算法知识点总结.zip

    健壮性与高性能:Java通过垃圾回收机制确保内存的有效管理,同时也能通过JIT编译器优化来提升运行时性能。 标准库丰富:Java拥有庞大的类库,如Java SE(Java Standard Edition)包含基础API,用于开发通用应用...

    Java体系架构知识点整理,包括Java基础、Spring、MySQL、算法题等.zip

    健壮性与高性能:Java通过垃圾回收机制确保内存的有效管理,同时也能通过JIT编译器优化来提升运行时性能。 标准库丰富:Java拥有庞大的类库,如Java SE(Java Standard Edition)包含基础API,用于开发通用应用...

    Jit-versionControl:Java中的版本控制程序,使用SQL。 实现git的基本功能

    Jit版本控制在Microsoft Azure服务器上运行的,用Java和SQL编写的基本版本控制程序。 这是尝试使用git中的基本功能来实现基本版本控制。 完成该项目是为了学习,目的是应用我在华盛顿大学学习的CSE414课程中学到的...

    大数据知识仓库涉及到数据仓库建模、实时计算、大数据、数据中台、系统设计、Java、算法等。.zip

    健壮性与高性能:Java通过垃圾回收机制确保内存的有效管理,同时也能通过JIT编译器优化来提升运行时性能。 标准库丰富:Java拥有庞大的类库,如Java SE(Java Standard Edition)包含基础API,用于开发通用应用...

    Java性能调优实战——覆盖80%以上的Java应用调优场景

    避免使用Java序列化14讲多线程之锁优化(下):使用乐观锁优化并行操作16讲多线程调优(下):如何优化多线程上下文切换17讲并发容器的使用:识别不同场景下最优容器21讲深入JVM即时编译器JIT,优化Java编译25讲答疑...

    【独家】【笔面试知识要点】15.JRE与JAR与WAR与JIT1

    JAR文件是Java Archive文件,它将许多文件聚合为一个文件。用于分发JavaServer Pages,JavaServlet,Java类,XML文件,

    java版飞机大战源码-java-performance:Java系统性能优化实战

    书中代码包含了关键注释和结论,也可以直接浏览代码获得知识 如果对SpringBoot技术有兴趣,可以购买或者电子版 大佬评书 看了李兄的第4章“代码性能优化”,里面提到了很多代码优化技巧,非常实用,很多技巧也是t-io...

    技术面试必备知识点.zip

    健壮性与高性能:Java通过垃圾回收机制确保内存的有效管理,同时也能通过JIT编译器优化来提升运行时性能。 标准库丰富:Java拥有庞大的类库,如Java SE(Java Standard Edition)包含基础API,用于开发通用应用...

    最新java面试专题01-JVM

    最新jvm面试题合集,涵盖JVM运行时数据区、垃圾回收算法、垃圾回收器、类加载机制、JIT即时编译等核心知识点及常见面试题,一书在手,天下我有。 JVM内存结构:JVM的内存结构主要包括堆内存、方法区、栈(包括Java...

    高级java笔试题-understanding-the-jvm:《深入理解Java虚拟机》阅读笔记

    JIT 时进行的优化进行了总结,编译器优化部分尚未进行深入研究。 阅读方法: 本 repo 的 README.md 从头读到尾就是一个虚拟机大部分知识点的框架,就像一颗搜索树一样,我们想要了解哪一部分知识,就从根节点开始...

    深入解析ANDROID虚拟机

    分别讲解了Android系统的基础知识、Android系统的结构和核心框架、Java虚拟机和Dalvik虚拟机的知识、实现程序编译和调试、Dalvik的运作流程、DEX优化和安全管理、Android虚拟机生命周期管理和内存分配策略、虚拟机...

    leetcode和oj-awesome-java:精选的Java框架、库、工具、站点和软件的精选列表。作者从awesome-go项目中窃取了这

    leetcode 和 oj ...是一个从业者驱动的社区新闻网站,专注于促进专业软件开发中的知识传播和创新。 Java HotSpot JIT 编译器的工具日志分析器/可视化器。 检查内联决策、热方法、字节码和程序集。 在

    java教育平台源码下载-Xena:轻量级、快速的基于Java的跨平台CSGOCheat

    我学到了很多关于跨平台开发、在垃圾收集/jit 级别优化应用程序以及不同操作系统如何处理系统内存的知识。 可悲的是,我将归档这个 repo。 我不想为游戏中越来越多的作弊者做出贡献。 随意将其用作教育参考。 Xena ...

    深入JVM内核 - 原理、诊断与优化

    介绍JVM的基本知识和发展历史,并介绍了Java语言规范和JVM规范。 第二课 JVM运行机制简介 堆、栈、方法区等 JVM启动流程 内存模型和volatile实例 解释和编译运行的概念 介绍JVM的内部结构、启动流程以及内存模型。...

    百度java贪吃蛇源码百度-JavaScriptAdvanced8:JavaScript高级联系新版

    百度java 贪吃蛇源码百度 --- 学习目标: - 理解面向对象开发思想 - 掌握 JavaScript 面向对象开发相关模式 - 掌握在 JavaScript 中使用正则表达式 - typora-copy-images-to media --- JavaScript 高级 课程介绍 课程...

    HotSpot实战

    通过这些实战练习,不仅有助于读者加深对知识或原理的理解,更为重要的是,它还可以培养读者独立探索的思维方式,这有助于读者把知识融会贯通并灵活应用到实际项目中。 《HotSpot实战》适合于已具有一定Java编程基础...

Global site tag (gtag.js) - Google Analytics