Android内存泄漏常见情况
2018-03-31 11:21
288 查看
Android内存中的泄漏主要是由堆内存造成的。
1 单例模式context的使用,由于引用的context的单例模式生命周期长于即将销毁的Activity导致的内存泄漏。建议使用Application的context。
2 静态类强引用了某个Activity导致Activity无法被回收。
3 非静态内部类的使用,非静态内部类和匿名内部类都会隐式的持有其外部类的引用。建议使用静态内部类加弱应用的方式。
4 对于使用了BraodcastReceiver,ContentObserver,File,Cursor,Stream,Bitmap等资源的使用,应该在Activity销毁时及时关闭或者注销,否则这些资源将不会被回收,造成内存泄漏。
5 webView也会造成内存泄漏
内存工具leakcanary可以用于检测代码中是否存在内存泄漏,使用方式比较简单:
内存监测:
引入:compile 'com.squareup.leakcanary:leakcanary-android:1.4-beta2'
在Application中:
private RefWatcher mrefWatcher;
public static RefWatcher getRefWatcher(Context context){
BaseApplication application = (BaseApplication) context.getApplicationContext();
return application.mrefWatcher;
}
@Override
public void onCreate() {
mrefWatcher = LeakCanary.install(this);
}
要是有内存泄漏的情况可以在消息栏里面看到有对应的提示,点进去就能查到具体的引用是哪个
1 单例模式context的使用,由于引用的context的单例模式生命周期长于即将销毁的Activity导致的内存泄漏。建议使用Application的context。
2 静态类强引用了某个Activity导致Activity无法被回收。
3 非静态内部类的使用,非静态内部类和匿名内部类都会隐式的持有其外部类的引用。建议使用静态内部类加弱应用的方式。
4 对于使用了BraodcastReceiver,ContentObserver,File,Cursor,Stream,Bitmap等资源的使用,应该在Activity销毁时及时关闭或者注销,否则这些资源将不会被回收,造成内存泄漏。
5 webView也会造成内存泄漏
内存工具leakcanary可以用于检测代码中是否存在内存泄漏,使用方式比较简单:
内存监测:
引入:compile 'com.squareup.leakcanary:leakcanary-android:1.4-beta2'
在Application中:
private RefWatcher mrefWatcher;
public static RefWatcher getRefWatcher(Context context){
BaseApplication application = (BaseApplication) context.getApplicationContext();
return application.mrefWatcher;
}
@Override
public void onCreate() {
mrefWatcher = LeakCanary.install(this);
}
要是有内存泄漏的情况可以在消息栏里面看到有对应的提示,点进去就能查到具体的引用是哪个
相关文章推荐
- Android内存优化12 内存泄漏常见情况3 注册持久化
- Android内存优化14 内存泄漏常见情况5 特殊对象造成的内存泄漏 WebView内存泄漏
- Android内存优化13 内存泄漏常见情况4 资源未关闭泄漏
- Android内存优化10 内存泄漏常见情况1 静态持久化
- Android内存优化11 内存泄漏常见情况2 线程持久化
- Android常见内存泄漏案例(精品)
- 避免常见的Android内存泄漏
- 5个Android开发中比较常见的内存泄漏问题及解决办法
- Android——内存篇:Android中5种最常见的内存泄漏问题以及解决办法
- Android性能优化之常见的内存泄漏
- Android性能优化之常见的内存泄漏
- Android常见的八种导致 APP 内存泄漏的问题
- 常见Android内存泄漏汇总
- Android开发中比较常见的内存泄漏问题及解决办法
- Android内存泄漏的可能情况
- 5个Android开发中比较常见的内存泄漏问题及解决办法
- Android下常见的内存泄漏
- Android常见内存泄漏
- Android中常见的内存泄漏
- [Android]常见的内存泄漏