美文网首页
内存泄漏

内存泄漏

作者: HangChen | 来源:发表于2017-09-01 10:53 被阅读0次

    1.当查询完数据库之后,及时关闭Cursor对象。
    2.记得在Activity的onPause方法中调用unregisterReceiver()方法,解注册广播
    3.避免Content内存泄漏,比如在4.0.1之前的版本上不要讲Drawer对象置为static。当一个Drawable绑定到了View上,实际上这个View对象就会成为这个Drawable的一
    个callback成员变量,上面的例子中静态的sBackground持有TextView对象lable的引用,而lable只有Activity的引用,而Activity会持有其他更多对象的引用。
    sBackground生命周期要长于Activity。当屏幕旋转时,Activity无法被销毁,这样就产生了内存泄露问题。
    4.尽量不要在Activity中使用非静态内部类,因为非静态内部类会隐式持有外部类实例的引用,当非静态内部类的引用的声明周期长于Activity的声明周期时,会导致
    Activity无法被GC正常回收掉。
    5.谨慎使用线程Thread!!这条是很多人会犯的错误: Java中的Thread有一个特点就是她们都是直接被GC Root所引用,也就是说Dalvik虚拟机对所有被激活状态的线程都
    是持有强引用,导致GC永远都无法回收掉这些线程对象,除非线程被手动停止并置为null或者用户直接kill进程操作。所以当使用线程时,一定要考虑在Activity退出时,
    及时将线程也停止并释放掉
    6.使用Handler时,要么是放在单独的类文件中,要么就是使用静态内部类。因为静态的内部类不会持有外部类的引用,所以不会导致外部类实例的内存泄露

    相关文章

      网友评论

          本文标题:内存泄漏

          本文链接:https://www.haomeiwen.com/subject/zvmhjxtx.html