1. 程式人生 > 其它 >關於java中的逃逸分析

關於java中的逃逸分析

物件一般都是在堆上生成的,其實這也不是絕對的,特例就是“逃逸分析”。

• 程式碼

/**
 * 物件一般都是在堆上生成的,其實這也不是絕對的,特例就是“逃逸分析”。
 * 逃逸分析(jdk1.6+):jvm在分析程式碼之後,發現一個物件在宣告之後,只在其所在的函式內呼叫,那麼他就會將這個物件在棧上申請空間,而不是在堆上。
 * 因為在棧上申請的物件,函式執行完畢後就會自動清理,這樣就大大減輕了GC的壓力!
 */
public class Test2 {

    public static void main(String[] args) {
        while (true) {
            Integer integer 
= new Integer(111111); //這裡數值要大於127或小於-128,避免快取 } } }

關閉逃逸分析: IDEA設定啟動jvm引數 : -XX:-DoEscapeAnalysis

• 小結:
逃逸分析是分析了物件只是在當前函式範圍內使用,因而改為在棧上申請空間。而棧是函式執行完,立即清理的,所以不需要等到GC了,
大大緩解了GC的壓力。
當然如果不是隻在當前函式範圍內用到的物件不行!