预防Android内存泄露
作者: Android开发网原创 时间: 2011-08-10
对于很多处理图形相关的Android开发者来说,大的Bitmap对象可能直接导致软件崩溃,Android平台如何防止内存泄露呢? 目前来说Android设备的RAM可能差距比较大,很多低端配置的256MB RAM或512MB RAM由于运行了太多的后台任务或HTC Sense这样的主题导致了处理一些高像素的图片,比如500w或800w像素的照片很容易崩溃。

1. 判断目标设备Dalvik VM内存情况

通过 java.lang.Runtime类的 long freeMemory() 方法可以获取当前进程的RAM可用情况,Runtime类需要 getRuntime() 方法来实例化。

比如获取最大可用RAM 为 Runtime.getRuntime().maxMemory();

2. Bitmap对象在打开时可以考虑先缩小图片

通过减少工作区域可以有效的降低RAM使用,由于在内存中是DIB方式,可以想象ARGB的图像占用内存为 4*height*width,比如500万像素的图片,占用内存就是500x4=2000万字节就是19MB左右。同时Java VM的异常处理机制和绘图方法可能在内部产生副本,最终消耗的运行内存是十分庞大的,对于图片打开时就进行缩小可以使用 android.graphics.BitmapFactory的相关方法来处理,这里参考Android123早期文章,Android缩略图类源代码 即可

3. 及时的显示执行Bitmap的recycle方法,以及是当时可以调用Runtime的gc方法,提示虚拟机尽快释放掉内存

更多相关文章

  1. Android(安卓)内存泄漏
  2. Android事件分发机制完全解析(终极版二)
  3. 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
  4. Android(安卓)异常处理
  5. Android(安卓)ListView内存优化
  6. Android常用动画alpha和rotate同时使用
  7. 检测Android本地存储是否有敏感信息
  8. Hierarchy Viewer
  9. 实现ListView的item逐个飞入效果——LayoutAnimationController

随机推荐

  1. 自动重定向到XML返回的URL?
  2. 在Symfony2中使用Doctrine DQL时检索的记
  3. 阅读使用JavaScript生成的页面
  4. 入门: 如何在xampp中运行php文件 (WINDOW
  5. 只有变量可以通过引用- array_walk传递。
  6. PHP mysqli_fetch_assoc不返回正确的值。
  7. PHP教程之PHP调用session_start后页面始
  8. 海词网招聘php程序员一名(上海)
  9. (phpQuery)对网站产品信息采集代码的优化
  10. PHP文件操作 - 替换某行,插入某行,删除某行