逃逸分析

在編譯程序優化理論中 ， 逃逸分析是一種確定指針動態範圍的方法 — — 分析在程序的哪些地方可以訪問到指針 。 它涉及到指針分析和形狀分析 。 當一個變量 在子程序中被分配時 ， 一個指向變量的指針可能逃逸到其它執行線程中 ， 或是返回到調用者子程序 。 如果使用尾遞歸優化 （ 通常在函數編程語言中是需要的 ） ， 對象也可以看作逃逸到被調用的子程序中 。 如果一種語言支持第一類型的計算續體在Scheme和新澤西Standard ML中同樣如此 ） ， 部分調用棧也可能發生逃逸 。 如果一個子程序分配一個對象並返回一個該對象的指針 ， 該對象可能在程序中被訪問到的地方無法確定 — — 這樣指針就成功 “ 逃逸 ” 了 。 如果指針存儲在全局變量或者其它數據結構中 ， 因爲全局變量是可以在當前子程序之外訪問的 ， 此時指針也發生了逃逸 。 逃逸分析確定某個指針可以存儲的所有地方 ， 以及確定能否保證指針的生命週期只在當前進程或線程中 。