android一种引发内存溢出的原因和一种对应的解决方式

       新的版本上线了,第二天就看到了反馈回来的错误,比较多的一个错误是java.lang.OutOfMemoryError: bitmap size exceeds VM budget,对于这样的菜鸟看这个问题去修改那是不可能滴,我就看着老大去怎么修改的。内存溢出一般是因为太多的图片引起的,他就在思考图片加载和清理的问题,想到了pad版本都没有出现过类似的问题,为什么手机版就出现了呢。大概的看了一下pad版本的代码,突然想到了页面跳转之后忘了对图片的缓存进行回收,在代码中加上

	@Override
	public void onDestroy() {
		super.onDestroy();
		if(checkImage != null) {
			checkImage.clearBitmap();
		}
	}
       问题就得了解决,checkImage变量是用于处理图片加载的问题。我们的客户端对需要使用很多图片,图片在程序中的处理方式是第一步首先检查内存中是否存在加载的图片,第二步如果没有就检查本地(SD卡)中有没有存储的图片,最后才是到服务器端进行请求。系统本身会对内存进行相应的处理,但是因为图片加载的比较多比较频繁,如果不进行手动清理,也是容易出现内存溢出的问题的。

clearBitmap函数:

	public void clearBitmap() {
		if(hm != null) {
			try {
				Iterator<Map.Entry<String, Bitmap>> it = hm.entrySet().iterator();
				while(it.hasNext()) {
					Map.Entry<String, Bitmap> entry = it.next();
					Bitmap bm = entry.getValue();
					bm.recycle();
					bm = null;
				}
				hm.clear();
			}catch (Exception e) {
			}
		}		
	}

       另外遇到的一个问题就是一些空指针的错误Caused by: java.lang.NullPointerException,这个问题出现的频率也是比较大的一个,但是这个问题又不是自己 能够解决的,属于偶发性错误,对于这样的错误,我们要做的只是保证客户端不崩溃就行了,所以找到错误对应的行,查看空指针大概出现的位置,然后使用try catch捕获就行了,不需要进行别的任何的处理就行了。因为这个错误不会影响到下单和查看客户端的一些重要的信息。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值