这一讲大概讲了Java平台的组成部分:
- Java语言特性。
- 基础类库。
- JVM平台。
- 工具。
对JVM的编译运行机制着墨稍多。知识点有:
- JVM加载字节码后,会解释或编译执行。JDK默认是混合模式(
-Xmixed
)。可以用参数-Xint
关闭编译,只进行解释执行;用参数-Xcomp
关闭解释,先编译再运行机器码。
在服务器上做了三种模式的验证,解释模式最慢,编译模式其次,混合模式最快。可能是场景太简单了,编译执行的优势没发挥处理。
xxx@SR5S6~> java -Xcomp PerfTest01 10000000 10
Elapsed time: 13.406
xxx@SR5S6~> java PerfTest01 10000000 10
Elapsed time: 9.033
xxx@SR5S6~> java -Xint PerfTest01 10000000 10
Elapsed time: 309.356
- Oracle JDK9引入AOT特性,即将字节码编译成机器码。使用方法如下:
jaotc --output libjava.base.so --module java.base
jaotc --output PerfTest01.so PerfTest01.class
java -XX:AOTLibrary=./PerfTest01.so,./libjava.base.so PerfTest01 1000000 10