阅读《JVM 通过「逃逸分析」就能让对象在「栈上分配」》

2021-02-17  本文已影响0人  普通的程序员

原文地址
https://mp.weixin.qq.com/s/FYNGIxdZZmOEjHwSWxsv1A

image.png

1、全局逃逸(GlobalEscape)
即一个对象的作用范围,逃出了当前方法或者当前线程,有以下几种场景:

对象是一个静态变量;
对象作为当前方法的返回值;
如果复写了类的 finalize 方法,则此类的实例对象都是全局逃逸状态(因此为了提高性能,除非万不得已,不要轻易复写 finalize 方法);
2、参数逃逸(ArgEscape)
即一个对象,被作为方法参数传递,或者被参数引用,但在调用过程中,不会再被其它方法或者线程访问。

3、没有逃逸(NoEscape)
即方法中的对象,没有发生逃逸,这种对象会被 Java 即时编译器进一步的优化。

我阅读后的重点在:
这个参数可以提升执行效率

上一篇下一篇

猜你喜欢

热点阅读