2014-04-01 51 views
0

看完Google I/O Memory Management的視頻後,我才知道內存泄漏的原因以及如何通過logcat檢查它。在視頻中提到的例子之一:Google I_O 2011 Android內存管理

public class MainActivity extends Activity { 

class Leaky { 

    public void doSomething() { 
     System.out.println("hello"); 
    } 
} 

static Leaky leak = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (leak == null) { 
     leak = new Leaky(); 
    } 
    } 
} 

當手機的配置更改(如屏幕旋轉),新的活動創造和Dalvik的堆得到提高。在這種情況下,logcat輸出增加的dalvik堆大小。

但是,當在Android 4.x設備上測試時,沒有獲得與增加的dalvik堆大小相關的logcat。

我錯過了什麼嗎?

回答

3

當手機的配置更改(如屏幕旋轉),新的活動創造和Dalvik的堆得到提高

一個新的活動被創建。這可能會或可能不會增加堆的大小。堆大小隻有在您接近堆大小限制時纔會增加(並且可以擴展堆)。

如果您觀看該視頻,您將學習如何使用MAT來真正確定內存泄漏,而不是依賴LogCat消息。