代码优化
栈上分配
逃逸分析以后发现没有逃逸,就可以进行站上分配
在栈上分配可以提高性能,减少 GC
同步省略
带动态编译同步代码块的时候,JIT编译器可以借助逃逸分析来判断同步代码块所使用的锁对象是否只能被一个线程访问到,而没有发布到其他的线程。如果只会被一个线程访问,JIT 在编译的时候就会消除同步锁。就会大大提高并发性和性能。这个消除同步锁的过程叫做,同步省略,也叫做锁消除。
标量替换
默认jdk是打开的
介绍
逃逸分析以后发现不会逃逸,则可以优化代码
class Test01 {
public void test() {
Project project = new Project();
System.out.println(project);
}
// 经过标量替换以后会变成一下方法
public void test() {
int i;
int b;
System.out.println(project);
}
class Project {
private int i;
private int b;
}
}