• 谈谈对于Java平台的理解


    • Java本身是一种面向对象的语言
    • 有两个显著的特性
      • 书写一次,到处运行,能够非常容易地获得跨平台能力
      • 垃圾收集(GC,Garbage Collection),通过垃圾收集器回收分配内存,大部分情况下,程序员不需要自己操心内存的分配和回收。
    • JRE和JDK
      • JRE,Java运行环境,包含了JVM和Java类库,以及一些模块等。
      • JDK,是JRE的一个超集,提供了更多工具,比如编译器、诊断工具等。
    • Java的解释执行。Java的源代码首先通过Javac编译成为字节码(bytecode),在运行时,通过JVM内嵌的解释器将字节码转换为机器码。
    • Java的编译执行。常见的JVM,都提供了JIT(Just-In-Time)编译器,即动态编译器,JIT能够在运行时将热点代码编译成机器码,这种情况下部分热点代码就属于编译执行。
      Java平台的蓝图

    在运行时,JVM会通过类加载器(Class-Loader)加载字节码,解释或者编译执行。JDK8实际是解释和编译混合的一种模式,即所谓的混合模式(-Xmixed)。
    通常运行在server模式的JVM,会进行上万次调用以收集足够的信息进行高效的编译,client模式这个门限是1500次。
    Oracle Hotspot JVM内置了两个不同的JIT compiler,C1对应前面的client模式,适用于对于启动速度敏感的应用,如普通Java桌面应用;C2对应server模式,它的优化是为长时间运行的服务器端应用设计的。默认是采用所谓的分层编译。
    Java虚拟机启动时,可以指定不同的参数对运行模式进行选择。
    比如,指定-Xint,就是告诉JVM只进行解释执行,不对代码进行编译,这种模式抛弃了JIT可能带来的性能优势。因为解释器是逐条读入,逐条解释运行的。
    -Xcomp,是告诉JVM关闭解释器,不要进行解释执行,或者叫做最大优化级别。会导致JVM启动变慢非常多,同时如果不进行profiling,往往不能对JIT编译器进行有效优化。
    AOT(Ahead-of-Time Compilation),新的编译方式,直接将字节码编译成机器码,这样就避免了JIT预热等各方面的开销,比如Oracle JDK9就引入了实验性的AOT特性,并且增加了新的jaotc工具。

    • JVM作为一个强大的平台,本质上合规的字节码都可以运行,比如Clojure、Scala、Groovy、JRuby、Jython等大量JVM语言。
  • 相关阅读:
    Odoo|“视图”和“模型”之间的数据传输
    计算机毕业设计Java教学视频平台系统(源码+系统+mysql数据库+lw文档)
    操作系统学习笔记2 | 操作系统接口
    Docker 镜像
    Redis-分布式锁
    cobbler3使用总结
    数据增广或图片增广
    Eureka-server集群都挂了,微服务之间还能调通吗
    蓝牙智能营养电子秤解决方案
    【Trailhead题目解析】Prepare your salesforce org for users - 5Create Chatter Groups
  • 原文地址:https://blog.csdn.net/qq_43806430/article/details/125541560