(1)先从定义开始:
Android(Java)中常见的容易引起内存泄漏的不良代码
Android主要应用在嵌入式设备当中,而嵌入式设备由于一些众所周知的条件限制,通常都不会有很高的配置,特别是内存是比较有限的。如果我们编写的代码当中有太多的对内存使用不当的地方,难免会使得我们的设备运行缓慢,甚至是死机。为了能够使得Android应用程序安全且快速的运行,Android的每个应用程序都会使用一个专有的Dalvik虚拟机实例来运行,它是由Zygote服务进程孵化出来的,也就是说每个应用程序都是在属于自己的进程中运行的。一方面,如果程序在运行过程中出现了内存泄漏的问题,仅仅会使得自己的进程被kill掉,而不会影响其他进程(如果是system_process等系统进程出问题的话,则会引起系统重启)。另一方面Android为不同类型的进程分配了不同的内存使用上限,如果应用进程使用的内存超过了这个上限,则会被系统视为内存泄漏,从而被kill掉。
(2)结论是内存不够用就叫oom.
Android设备内存一般比较小,容易引起oom.
Android每个应用程序在专有的Dalvik虚拟机实例中运行,Android分配固定内存。超出分配的内存,引起oom,系统 KILL掉,程序结束。

Android系统进程OOM,机器重启。

Android oom 有时出现很频繁,这一般不是Android设计的问题,一般是我们的问题。
  从网上摘抄,出现oom,无非主要是以下几个方面:
  一、加载对象过大
  二、相应资源过多,没有来不及释放。
  解决这样的问题,也有一下几个方面:
  一:在内存引用上做些处理,常用的有软引用、强化引用、弱引用
  二:在内存中加载图片时直接在内存中做处理,如:边界压缩.
  三:动态回收内存
  四:优化Dalvik虚拟机的堆内存分配
  五:自定义堆内存大小

更多相关文章

  1. 内存使用总结篇 -- Android内存优化第五弹
  2. Android 性能优化 之谈谈Java内存区域
  3. 深入探索 Android 内存优化(炼狱级别)
  4. 第三部分:Android 应用程序接口指南---第四节:动画和图形---第五章
  5. Android下常见的内存泄露
  6. init进程 && 解析Android启动脚本init.rc && 修改它使不启动andr
  7. 【内存优化】避免使用Enum

随机推荐

  1. 【Android】对话框
  2. 把文本拷贝到剪切板——android
  3. android 断点续传类
  4. Android实现CoordinatorLayout、Recycler
  5. ConnectivityManager判断当前用的是什么
  6. android欢迎界面淡入淡出效果
  7. Android全面屏手机判断NavigationBar是否
  8. android 短信发送器
  9. 为iPhone,iPad,Android和其他移动设备启用L
  10. android弹钢琴的一个简单程序