内存泄露和内存溢出

 

内存泄露:

<strong>memory leak</strong>

 

<strong>是指程序在申请内存后,无法释放已申请的内存空间,一次<a data-cke-saved-href="https://www.baidu.com/s?wd=%E5%86%85%E5%AD%98%E6%B3%84%E9%9C%B2&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YYmHcznjDYm1P-mWfvnHb40ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3ErjDznHfsPW01nHTdPHnYP1Tz" href="https://www.baidu.com/s?wd=%E5%86%85%E5%AD%98%E6%B3%84%E9%9C%B2&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YYmHcznjDYm1P-mWfvnHb40ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3ErjDznHfsPW01nHTdPHnYP1Tz" class="baidu-highlight">内存泄露</a>危害可以忽略,但<a data-cke-saved-href="https://www.baidu.com/s?wd=%E5%86%85%E5%AD%98%E6%B3%84%E9%9C%B2&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YYmHcznjDYm1P-mWfvnHb40ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3ErjDznHfsPW01nHTdPHnYP1Tz" href="https://www.baidu.com/s?wd=%E5%86%85%E5%AD%98%E6%B3%84%E9%9C%B2&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YYmHcznjDYm1P-mWfvnHb40ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3ErjDznHfsPW01nHTdPHnYP1Tz" class="baidu-highlight">内存泄露</a>堆积后果很严重,无论多少内存,迟早会被占光。</strong>

 

1.将线程的内部类改为静态内部类.(非静态内部类会持有对外部类的引用,而静态内部类则不会).

包括及时释放资源,static,cursor,IO

2采用弱引用保存context引用(weakreference)

 

(关于内存泄露的检测,可以使用Android studio 自带的Profiler工具)

 

内存溢出:

 

out of memory
是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。

 

 

 

1,图片过大导致 OOM :


对图片采用软引用,及时地进行 recyle()操作

 

SoftReference<Bitmap> bitmap = new SoftReference<Bitmap>(pBitmap);
if(bitmap != null){
if(bitmap.get() != null && !bitmap.get().isRecycled()){
bitmap.get().recycle();
bitmap = null;
}
} 


2,横竖屏反复切换:

 

(1)除去xml文件中大的图片背景,设置改由Activity中加载.

(2)直 接 把 xml 配 置 文 件 加 载 成 view 再 放 到 一 个 容 器 里 , 然 后 直 接 调 用this.setContentView(View view);方法,避免 xml 的重复加载。
 

3、 在页面切换时尽可能少地重复使用一些代码
比如:重复调用数据库,反复使用某些对象等等......
常见的内存使用不当的情况 

 

4,在构建adapter时没有使用convertView.

 

5,Bitmap使用时没有及时使用recycle释放内存.(不是必须,看内存情况)

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值