zoukankan      html  css  js  c++  java
  • 谈谈对Java平台的理解笔记

    1. 谈谈你对Java平台的理解。

      Java是一种面向对象的语言,最显著的特性有两个方面:

        一个就是一次编译,到处运行(Write once, run anywhere),能够非常容易的获得跨平台能力;

        另一个就是垃圾收集(GC,Garbage Collection),Java通过GC回收分配内存,大部分情况下程序员不需要操心内存的分配和回收;

      什么是JRE(Java Runtime Environment)/JDK(Java Development Kit)?

        JRE:java运行环境,包含了JVM,Java内裤,以及一些模块;

        JDK:JRE的一个超集,提供了更多工具,比如编辑器、各种诊断工具;

        JVM < JRE < JDK

    2. Java是解释执行,这句话正确么?

      

      Java是解释执行,这个说法不太准确。我们开发java的源代码,通过Javac编译成字节码,然后在运行时通过JVM内嵌的解释器将字节码转换为最终的机器码。

    但是常见的JVM(Oracle JDK 提供的Hotspot JVM),都提供了动态编译器JIT(Just in Time),JIT能够在运行时将热点代码编译成机器码,这种情况下部分热点代码就属于编译执行,而不是解释执行。

      如图Java是分为编译器和运行时。java的编译生成的是字节码,而不是可以直接执行的机器码。Java通过字节码和JVM这种跨平台的抽象,屏蔽了操作系统和硬件的细节,这也是“一次编译,到处执行的基础”。

      JVM启动时可以指定不同的参数对运行模式进行选择,例如:

        -Xmixed:解释和编译混合模式;

        -Xint:只进行解释执行,不对代码进行编译,抛弃JIT可能带来的性能优势;

        -Xcomp:关闭解释器或者叫做最大优化级别。但这种模式并不一定是最高效的,他会导致JVM启动变慢,同时有些JIT编译器优化方式,如分支预测,如果不进行profiling,往往不能进行有效优化。

        AOT(Ahead-of-Time Compilation):直接将字节码编译成机器代码,避免了JIT预热等各方面的开销。在Oracle JDK 9 引入了实验性的AOT特征,并增加了新的jaotc工具;

      

      

  • 相关阅读:
    SpringBoot java.lang.IllegalArgumentException: Request header is too large
    (转)以太坊 钱包 创建 导入 Keystore
    (转)以太坊数据同步常见问题集锦
    以太坊nonce
    (转)Fabric 1.0 读写集
    (转)Fabric CA环境的集成
    Hyperledger Fabric CA的命令行用法
    oracle新建表空间与用户
    积分智能合约
    远程桌面,身份验证错误:要求的函数不正确等解决办法
  • 原文地址:https://www.cnblogs.com/jiangyaxiong1990/p/9381483.html
Copyright © 2011-2022 走看看