• JVM学习之---了解JIT


    先对JVM进行一个说明。
    jvm只识别字节码,所以jvm跟语言是解耦的,jvm运行的是class文件,像Groovy,Kotlin,Scala等语言,他们都可以转移成字节码,也都可以再jvm上运行,这就是JVM的跨语言的特征。
    在这里插入图片描述

    解释执行与JIT

    解释执行:主要是执行字节码指令,一般这些指令会按照顺序解释执行。
    JIT:在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化。也称为及时编译。(Just In Time Compiler)

    在JDK10之前(列如jdk8)
    内置了两个JIT,分别是C1编译器和C2编译器
    C1:编译器是一个简单快速的编译器,不优化代码
    C2:优化代码,目前无人能维护

    分层编译,JDK8之后,默认开启了分层编译

    在这里插入图片描述

    逃逸分析: 实现栈上分配
    分析对象动态作用域,当一个对象在方法中定义后,它可能被外部方法所引用

    如果是逃逸分析出来的对象可以在栈上分配的话,那么该对象的生命周期就跟随线程了,就不需要垃圾回收。如果是频繁的调用此方法则可以得到很大的性能提高。
    采用了逃逸分析后,满足逃逸的对象在栈上分配
    没有开启逃逸分析,对象都在堆上分配,会频繁触发垃圾回收(垃圾回收会影响系统性能),导致代码运行慢

  • 相关阅读:
    防火墙的相关知识
    安装SQL Server详细教程
    Metasequoia 4 水杉3D建模工具 附序列号
    Protocol Buffers学习【Qt】
    牛客网刷题-(1)
    飞睿智能高精度、低功耗测距,无线室内定位UWB芯片如何改变智能家居
    链表相关的一些问题
    three.js 字体精简处理
    第八章: 项目质量管理
    Android 中级控件
  • 原文地址:https://blog.csdn.net/m0_67394230/article/details/126744474