android 集合 内存泄漏,Android内存泄漏第二课--------(集合中对象没清理造成的内存泄漏 )...

一、我们通常把一些对象的引用加入到了集合容器(比如ArrayList)中,当我们不需要该对象时,并没有把它的引用从集合中清理掉,这样这个集合就会越来越大。如果这个集合是static的话,那情况就更严重了。

所以要在退出程序之前,将集合里的东西clear,然后置为null,再退出程序。

private ArrayList mList;

@Override

protected void onDestroy() {

super.onDestroy();

if (mList!=null){

mList.clear();

mList= null;

}

}

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

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

13f8aceb60dc0b8fdc0e980bd82d999d.png

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

L3Byb3h5L2h0dHAvbWF0cC10ZXN0LmNuLWhhbmd6aG91Lm9zcy5hbGl5dW4taW5jLmNvbS81M2RkYWU5OWUwOWNiYzZlNTU2MjEwZGZmNmMxOTBjNi5QTkc=.jpg

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

java中compareTo和compare方法之比较,集合中对象的比较

前言 转自:http://www.cnblogs.com/yueliming/archive/2013/05/22/3092576.html (这里做了一些小改动) 一直一来对集合中对象的比较方案,有 ...

Android学习笔记(第二篇)View中的五大布局

PS:人不要低估自己的实力,但是也不能高估自己的能力.凡事谦为本... 学习内容: 1.用户界面View中的五大布局... i.首先介绍一下view的概念   view是什么呢?我们已经知道一个Act ...

java8 list转map,list集合中的元素的属性转set,list集合中对象的属性转list

一.使用java8对list操作 1.1list转map private Map getMemberMap() { List m ...

Android OpenGL教程-第二课【转】

第二课 你的第一个多边形: 在第一个教程的基础上,我们添加了一个三角形和一个四边形.也许你认为这很简单,但你已经迈出了一大步,要知道任何在OpenGL中绘制的模型都会被分解为这两种简单的图形. 读完了 ...

Android之ViewPager 第二课

在这里只粘贴部分代码 在第一课中,只有View滑动完毕,才触发动画效果,令滑块移动,在第二课中,将实现滑块与View同步运行. SecondActivity.java package com.andr ...

Java集合中对象排序

集合中的对象排序需求还是比較常见的.当然我们能够重写equals方法,循环比較:同一时候Java为我们提供了更易使用的APIs.当须要排序的集合或数组不是单纯的数字型时,通常能够使用Comparato ...

Java中删除第一个集合中以某某开头的元素,删除第二个集合中以某某结尾的元素,并合并成一个集合

import java.util.ArrayList; import java.util.List; public class Test { public static void main(Strin ...

C#中DataTable与泛型集合互转(支持泛型集合中对象包含枚举)

最近在做WCF,因为是内部接口,很多地方直接用的弱类型返回(DataSet),这其实是一种非常不好的方式,最近将项目做了修改,将所有接口返回值都修改成强类型,这样可以减少很多与客户端开发人员的沟通,结 ...

Java中实现对集合中对象按中文首字母排序

有一个person对象如下: public class Person { private String id;private String nam; } 一个list集合如下: List

随机推荐

有效Email

!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test($.trim($('#account').val()))

CentOS 6.4 U盘启动问题的解决

替换syslinux/目录下的vesamenu.c32文件. 下载地址: http://pan.baidu.com/s/1mg8xce8

Hibernate逍遥游记-第15章处理并发问题-003乐观锁

1. 2. drop database if exists SAMPLEDB; create database SAMPLEDB; use SAMPLEDB; drop table if exists ...

sqlite使用blob类型存储/访问 结构体

/* open fire host and slora report data database */ int open_report_db(void) { ; char sql[SQL_COMMAN ...

uva 11354 - Bond(树链拆分)

题目链接:uva 11354 - Bond 题目大意:给定一张图.每次询问两个节点路径上进过边的危急值的最大值的最小值. 解题思路:首先建立最小生成数,然后依据这棵树做树链剖分. #include & ...

[置顶] android调用第三方库——第四篇——调用多个第三方库

0:前言: 在前面三篇中我们介绍了android调用第三方库的形式,在这一篇中我们介绍调用多个第三方库的Android.mk的写法,由于其他三篇介绍的很详细,这里只给出Android.mk的内容. [ ...

vue 绑定样式的几种方式

vue 绑定样式 对象语法 1.v-bind:class设置一个对象,动态切换class

xxx&l ...

MySQL 5.7开启二进制日志注意事项

最近才开始将部分MySQL 5.6升级到MySQL 5.7, 在开启MySQL的二进制日志时,发现MySQL 5.7 与MySQL 5.6已有细微区别.如果在my.cnf配置文件中,只设置了全局系统变 ...

QT编程环境

(1)QT的工具 ① assistant 帮助手册 ② qmake -v 查看qt版本 ③ qmake -project 可以把项目的源文件组织成项目的描述文件 .pro ④ qmake 可以根据.p ...

下载 rpm 源码包并重新编译

$ yumdownloader --source gdb $ rpmbuild --rebuild gdb-7.8.1-30.fc21.src.rpm $ cd ~/rpmbuild/SPECS/ $ ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值