1. 程式人生 > >逃逸分析(Escape Analysis)

逃逸分析(Escape Analysis)

esc 結束 spa 由於 div span bsp color 創建

什麽是逃逸?

逃逸是指在某個方法之內創建的對象,除了在方法體之內被引用之外,還在方法體之外被其它變量引用到;這樣帶來的後果是在該方法執行完畢之後,該方法中創建的對象將無法被GC回收,由於其被其它變量引用。正常的方法調用中,方法體中創建的對象將在執行完畢之後,將回收其中創建的對象;故由於無法回收,即成為逃逸。

    /**
     * 無逃逸
     */
    void test01() {
        String test1 = "test1";
    }
    String test2;

    /**
     * 逃逸
     */
void test02() { test2 = "test2"; }

在方法內的變量不會逃逸,在方法外聲明的對象會發生逃逸,脫離了方法的控制,方法結束時變量沒有結束;

逃逸分析參數設置:

-XX:+DoEscapeAnalysis//使用
-XX:-DoEscapeAnalysis//不用

逃逸分析(Escape Analysis)