zoukankan      html  css  js  c++  java
  • Java是解释型语言么

    基础概念

    JVM虚拟机会将.java类文件编译成.class文件--字节码文件,这大家都知道。
    代码运行时还需要将.class字节码文件翻译成机器码才能执行。

    解释执行:将编译好的字节码一行一行地翻译为机器码执行。
    编译执行:以方法为单位,将字节码一次性翻译为机器码后执行。
    

    JVM虚拟机

    • JVM虚拟机执行遵循的二八原则,HotSpot虚拟机中会将经常执行的字节码用编译执行,把不怎么执行的字节码用解释执行的方案。
    • HotSpot虚拟机中有两种编译器,C1编译器和C2编译器。
    • Java7开始,HotSpot虚拟机默认采用分层编译的方式:热点方法首先被C1编译器编译,而后 热点方法中的热点再进一步被C2编译(理解为二次编译,根据前面的运行计算出更优的编译优化)。为了不干扰程序的正常运行,JIT编译时放在额外的线程中执行的,HotSpot根据实际CPU的资源,以 1:2的比例分配给C1和C2线程数。
    • 在计算机资源充足的情况,字节码的解释运行和编译运行时可以同时进行,编译执行完后的机器码会在下次调用该方法时启动,已替换原本的解释执行(意思就是已经翻译出效率更高的机器码,自然替换原来的相对低效率执行的方法)。
    定位问题原因* 根据原因思考问题解决方案* 实践验证方案有效性* 提交验证结果
  • 相关阅读:
    C#实体类对象修改日志记录
    C#中关于增强类功能的几种方式
    Elasticsearch入坑指南之RESTful API
    React入门实例
    .Net Core+Vue.js+ElementUI 实现前后端分离
    ElasticSearch入坑指南之概述及安装
    MySQL优化技巧
    RabbitMQ入门教程——路由(Routing)
    RabbitMQ入门教程——发布/订阅
    RabbitMQ入门教程——工作队列
  • 原文地址:https://www.cnblogs.com/jimoliunian/p/12759065.html
Copyright © 2011-2022 走看看