你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Web开发
android一种引发内存溢出的原因和一种对应的解决方式
 

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

       问题就得了解决,checkImage变量是用于处理图片加载的问题。我们的客户端对需要使用很多图片,图片在程序中的处理方式是第一步首先检查内存中是否存在加载的图片,第二步如果没有就检查本地(SD卡)中有没有存储的图片,最后才是到服务器端进行请求。系统本身会对内存进行相应的处理,但是因为图片加载的比较多比较频繁,如果不进行手动清理,也是容易出现内存溢出的问题的。
clearBitmap函数:
[java] 
public void <span style="font-size:18px; ">clear</span>Bitmap() { 
    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捕获就行了,不需要进行别的任何的处理就行了。因为这个错误不会影响到下单和查看客户端的一些重要的信息。

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089