相关系统
深入理解jvm执行引擎-CSDN博客
深入理解JVM后端优化技术-方法内联-CSDN博客
定义
当一个对象在方法里面被定义后,它可能让外部方法所引用,作为调用参数传递到其它的方法中,这种称为方法逃逸;还有可能被外部线程访问到,赋值给可以在其它线程中访问的实例数量,这种称为线程逃逸;从不逃逸、方法逃逸到线程逃逸,称为对象由低到高的不同逃逸程度。
左侧的代码,d对象不会让外部引用,只会用在方法中使用,所以不会发生逃逸。而右侧的代码中,d对象一看就有其它方法使用了,就会产生逃逸。JDK8中默认开启了逃逸分析,可以添加参数-XX:-DoEscapeAnalysis主动关闭逃逸分析。
优化措施
如果能分析出一个对象会不会逃逸到方法或线程之外,那么JIT就可能为这个对象实例采取后一系列的优化措施。