美文网首页
一 java体系的理解

一 java体系的理解

作者: BeYearn | 来源:发表于2018-11-15 18:30 被阅读0次
    1. 通常把java分为编译期和运行期, 但此处的编译和c语言的编译意义不同, javac的编译是将java源码编译为".class"字节码文件, 而不是可以直接执行的机器码. 在运行时,JVM通过class-loader加载字节码, 然后再解释或者编译执行

    2. jdk8实际是解释和编译混合的模式 提供了JIT(just in time)编译器即动态编译器, 可在运行时将热点代码编译成机器码, 该情况下热点代码就属于编译执行而非解释执行了

    3. jvm启动时.

    指定"-Xint" 即告诉jvm只进行解释执行(逐条读入,逐条解释运行),这种模式抛弃了JIT可能带来的性能优势.

    指定"-Xcomp" 告诉jvm关闭解释器,不进行解释执行,或者叫做最大优化级别. 但这种模式会导致jvm启动变慢非常多

    此外还有一种新的编译方式: AOT(Ahead-of-TIme Compilation),直接将字节码编译为机器码, 这样可避免JIT预热等方面的开销, 如Oracle jdk9, 就增加了AOT特性, 并增加了jaotc工具(也有三方工具), 如下可将某个类或者某个模块编译为AOT库.

    jaotc --output libHelloWorld.so HelloWorld.class
    jaotc --output libjava.base.so --module java.base
    

    然后在启动时指定即可

    java -XX:AOTLibrary=./libHelloWorld.so,./libjava.base.so HelloWorld
    
    

    相关文章

      网友评论

          本文标题:一 java体系的理解

          本文链接:https://www.haomeiwen.com/subject/mbgjfqtx.html