调优部分:
调优之前,需要先知道jvm的结构和代码从加载到运行的基本步骤和流程
有了一些前置知识,之后才能进行调优部分的学习。
类执行机制:
分为解释执行和编译执行两种方式。
重点来说说编译执行:
解释执行的效率比较低,为了提升执行性能,jdk将字节码编译成机器码的支持,在编译上,jdk提供了两种模式:client(c1)和server(c2).c1为轻量级,作少量性能开销比高的优化,占用内存少,适合桌面交互应用。主要优化有方法内联、去虚拟化、冗余消除等。
Server(c2)为重量级,占用内存多,适合服务端的应用,由于c2会收集程序的运行信息,所以它的优化不只是对于方法块。
逃逸分析是c2优化的基础,逃逸分析是指根据运行情况来判断方法中的变量是否会被外部读取,若不会则认为方法是逃逸的,基于逃逸分析c2会在编译时做标量替换、栈上分配和同步削除等操作。