预防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 : SeekBar 实现图片旋转缩放
  4. android小问题:RadioButton设置文字在图片背景的下方
  5. Android ListView内存优化
  6. Android BitmapShader 实战 实现圆形、圆角图片
  7. Android VideoView设置静音,Android 设置VideoView静音,Android
  8. ListView去掉分割线的几种方法
  9. SDK Platform Tools component is missing! Please use the SDK

随机推荐

  1. Android(安卓)simpleperf
  2. android相对布局实例—登录界面
  3. 史上最全干货:Android中的Intent
  4. android蓝牙通信
  5. android实现文件下载的几种方式
  6. What Android(安卓)Is
  7. android.os.storage Kotlin |Java
  8. Android(安卓)BroadCastReciver学习笔记
  9. android Q
  10. 《Android音频焦点机制深入理解》