原文地址
https://mp.weixin.qq.com/s/FYNGIxdZZmOEjHwSWxsv1A
1、全局逃逸(GlobalEscape)
即一个对象的作用范围,逃出了当前方法或者当前线程,有以下几种场景:
对象是一个静态变量;
对象作为当前方法的返回值;
如果复写了类的 finalize 方法,则此类的实例对象都是全局逃逸状态(因此为了提高性能,除非万不得已,不要轻易复写 finalize 方法);
2、参数逃逸(ArgEscape)
即一个对象,被作为方法参数传递,或者被参数引用,但在调用过程中,不会再被其它方法或者线程访问。
3、没有逃逸(NoEscape)
即方法中的对象,没有发生逃逸,这种对象会被 Java 即时编译器进一步的优化。
我阅读后的重点在:
这个参数可以提升执行效率
网友评论