zoukankan      html  css  js  c++  java
  • Android内存泄漏第二课--------(集合中对象没清理造成的内存泄漏 )

    一、我们通常把一些对象的引用加入到了集合容器(比如ArrayList)中,当我们不需要该对象时,并没有把它的引用从集合中清理掉,这样这个集合就会越来越大。如果这个集合是static的话,那情况就更严重了。 
    所以要在退出程序之前,将集合里的东西clear,然后置为null,再退出程序。

    private ArrayList<String> mList;
    
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (mList!=null){
            mList.clear();
            mList = null;
        }
    }

     二、编程过程中,我们常常会把一些对象加入到集合中。在我们不再需要该对象时,如果没有及时把它从集合中清理掉,就会导致这个集合占用的内存越来越大。

    同时如果这个集合是静态的话,那情况就更严重了。如下的代码段中在每次启动Activity的时候都往静态集合中添加了一个对象,如果Activity被频繁启动,set将不断变大,影响APP的正常运行。

    所以,集合中不再使用的对象应及时释放掉。上述代码应该在Activity的onDestroy()方法中,及时清理set里的元素,避免无用对象继续存在强引用,例如:

    这样可以保证set持有的强引用都被释放

  • 相关阅读:
    Shell脚本创建Nginx的upstream及location配置文件
    系统初始化
    算法训练 P0505
    算法训练 素因子去重
    基础训练 时间转换
    基础训练 字符串对比
    基础训练 分解质因数
    基础训练 矩形面积交
    快速幂矩阵
    基础训练 矩阵乘法
  • 原文地址:https://www.cnblogs.com/lxs1314/p/8397842.html
Copyright © 2011-2022 走看看