杨晓峰-第1讲 | 谈谈你对Java平台的理解?

1、java平台涉及方面:Java语言特性,包括泛型、Lambda等语言特性;基础类库,包括集合、IO/NIO、网络、并发、安全 等基础类库。

2、java类加载机制:常用版本JDK(如JDK 8)内嵌的Class-Loader,例如Bootstrap、 Application和Extension Class-loader;类加载大致过程:加载、验证、链接、初始化(这里参考了周志明的《深入理解Java虚拟机》,非常棒的JVM上手书籍);自定义Class-Loader等。

3、常见的垃圾收集器:SerialGC、Parallel GC、 CMS、 G1等。

4、java平台蓝图:


5、java代码执行过程:

在运行时,JVM会通过类加载器(Class-Loader)加载字节码,解释或者编译执行。主流Java版本中,如JDK 8实际是解释和编译混合的一种模式,即所谓的混合模式(-Xmixed)。通常运行在server模式的JVM,会进行上万次调用以收集足够的信息进行高效的编译,client模式这个门限是1500次。Oracle Hotspot JVM内置了两个不同的JIT compiler,C1对应前面说的client模式,适用于对于启动速度敏感的应用,比如普通Java桌面应用;C2对应server模式,它的优化是为长时间运行的服务器端应用设计的。 默认是采用所谓的分层编译(TieredCompilation)。

-Xint:就是告诉JVM只进行解释执行,不对代码进行编译

-Xcomp:这是告诉JVM关闭解释器,不要进行解释执行,或者叫作最大优化级别

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

示例:

jaotc --output libHelloWorld.so HelloWorld.class 

jaotc --output libjava.base.so --module java.base

然后,在启动时直接指定就可以了。

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

扩展:JEP 295: Ahead-of-Time Compilation

你可能感兴趣的:(杨晓峰-第1讲 | 谈谈你对Java平台的理解?)