为了能够使Android应用程序能够高效快速地运行,所以Android的每个应用程序都会用一个专有的Davilk虚拟机实例对象来运行,这个Davilk对象是由Zygote服务进程孵化出来的,这样的机制使每个应用进程都只能在属于自己的进程空间中运行。Android为不同类型的进程分配了不同的内存使用上限,也就是设置了一个阈值,当这个上限被超过时,就视为OOM,通过一定的选择策略,某些进程就会被系统kill掉以释放内存。

在编程中有些现象很容易造成造成内存泄露,我们应该尽量避免:
一.引用没释放造成的内存泄露
二.资源对象没关闭造成的内存泄露(比如没有关闭访问文件的输入输出流)
三.Bitmap没调用recycle(Bitmap对象在不使用时,我们应该先调用recycle()释放内存,然后才它设置为null.)
四.构造Adapter时,没有使用缓存的 convertView
五.一些不良代码成内存压力(一些代码虽然不会直接造成内存泄露,但是它一直占用内存就会影响其他进程访问内存,间接造成OOM)

补充:大量读取图片,比如listview或者相册,读取网络图片时,使用软引用(SoftReference),让系统能够自动的利用内存空间

更多相关文章

  1. 深入探索Android稳定性优化
  2. Android中的UID和PID意义,及查看方式
  3. [置顶] Android(安卓)内存泄漏
  4. Android(安卓)IPC机制(三)在Android(安卓)Studio中使用AIDL实现跨
  5. (转)Android内存管理机制之一:lowmemory killer
  6. Android中的服务(service)详解(三)--远程服务(remote)
  7. Android静态变量的生命周期
  8. android中图片的三级cache策略(内存、文件、网络)之三:文件缓存策略
  9. Android构建模块

随机推荐

  1. CentOS7.4 源码安装MySQL8.0的教程详解
  2. centos7上mysql8.0rpm方式安装教程图解
  3. Linux下如何实现Mysql定时任务
  4. 详解Mysql中日期比较大小的方法
  5. mysql数据库如何实现亿级数据快速清理
  6. MySQL存储过程的权限问题小结
  7. mysql zip 文件安装教程
  8. 将phpstudy中的mysql迁移至Linux教程
  9. MySQL如何创建触发器
  10. mysql视图原理与用法实例小结