2014-04-01 22 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消息。