`

Android内存管理机制

阅读更多

(1)Android是一个多任务系统,也就是说可以同时运行多个程序,这个大家应该很熟悉。一般来说,启动运行一个程序是有一定的时间开销的,因此为了加快运行速度,当你退出一个程序时,Android并不会立即杀掉它,这样下次再运行该程序时,可以很快的启动。随着系统中保留的程序越来越多,内存肯定会出现不足,这个时候Android系统开始挥舞屠刀杀程序。这里就有一个很明显的问题,杀谁?

(2)Android系统中杀程序的这个刽子手被称作"LowMemory Killer",它是在Linux内核中实现的。这里它实现了一个机制,由程序的重要性来决定杀谁。通俗来说,谁不干活,先杀谁。Android将程序的重要性分成以下几类,按照重要性依次降低的顺序:

名称 oom_adj 解释
FOREGROUD_APP 0 前台程序,可以理解为你正在使用的程序
VISIBLE_APP 1 用户可见的程序
SECONDARY_SERVER 2 后台服务,比如说QQ会在后台运行服务
HOME_APP 4 HOME,就是主界面
HIDDEN_APP 7 被隐藏的程序
CONTENT_PROVIDER 14 内容提供者,
EMPTY_APP
15
空程序,既不提供服务,也不提供内容


其中每个程序都会有一个oom_adj值,这个值越小,程序越重要,被杀的可能性越低。

(3)除了上述程序重要性分类之外,Android系统还维护着另外一张表,这张表是一个对应关系,以N1为例:

oom_adj 内存警戒值( 以4K为单位)
0 1536
1 2048
2 4096
7 5120
14 5632
15 6144

这个表是定义了一个对应关系,每一个警戒值对应了一个重要性值,当系统的可用内存低于某个警戒值时,就杀掉所有大于该警戒值对应的重要性值的程序。比如说,当可用内存小于6144 * 4K = 24MB时,开始杀所有的EMPTY_APP,当可用内存小于5632 * 4K = 22MB时,开始杀所有
的CONTENT_PROVIDER和EMPTY_APP。


(4) alter minfree改的是什么呢,上面这张对应表是由两个文件组成的:
/sys/module/lowmemorykiller/parameters/adj和/sys/module/lowmemorykiller/parameters/minfree。

alter minfreee就是修改/sys/module/lowmemorykiller/parameters/minfree这个文件的,举例来说,如果把最后一项改为32 * 1024,那么当可用内存小于128MB是,就开始杀所有的EMPTY_APP。

 

 

转自:http://mysuperbaby.iteye.com/blog/1397863

分享到:
评论

相关推荐

    Android内存管理机制研究_宋平波1

    Android内存管理机制研究 Android内存管理机制是Android操作系统的核心组件之一,负责管理和分配移动设备的内存资源。Android内存管理机制研究是移动应用开发者和研究人员需要深入了解和掌握的知识领域。本文将深入...

    android内存管理机制分析

    android内存管理机制分析,帮助你了解内存管理原理,更好的开发程序

    Android内存管理机制研究.pdf

    Android内存管理机制研究.pdf

    安卓系统内存管理机制

    安卓系统的内存管理机制是理解Android性能和优化的关键因素。在这个机制中,主要涉及到两种类型的存储:RAM(随机访问内存)和ROM(只读存储器)。 RAM是Android系统中的临时数据存储区域,它用于存放运行中的应用...

    android内存管理机制分析[归类].pdf

    Android系统的内存管理机制是其高效运行的关键之一。Android内核基于Linux 2.6,它包含了一系列特定于Android平台的设备驱动,如Android Binder用于进程间通信,电源管理驱动优化了嵌入式设备的电源使用,以及低内存...

    探讨Android内存管理

    Android 内存管理机制 如何评估 App 的内存占用 一些减少 App 内存占用的建议 内存管理概述 Android 运行时 (ART) 和 Dalvik 虚拟机使用分页和内存映射来管理内存。这意味着应用修改的任何内存,无论修改的方式是...

    深入探索Android内存优化1

    通过深入理解Android内存管理机制,合理利用各种工具,开发者可以有效地进行内存优化,提升应用性能和用户体验。这是一个长期学习和实践的过程,不断适应Android平台的更新和发展。 总之,Android内存优化是复杂而...

    Android内存优化1

    本文将探讨Android内存管理机制、优化内存的意义、如何避免内存泄漏、优化内存空间以及图片管理模块的设计与实现。 一、Android内存管理机制 Android的内存管理基于Java虚拟机(JVM),在Android 5.0之前使用...

    Android系统内存管理研究及优化_杜吉志1

    总的来说,理解Android内存管理机制并进行有效的内存优化,能够显著提升应用程序的性能和用户体验,避免因为内存问题导致的系统不稳定。对于Android开发者而言,深入研究和实践内存管理技巧是提升软件质量的关键步骤...

    Android内存泄漏.doc

    本文主要探讨了Android内存管理机制、内存泄漏的原因以及如何进行内存泄漏的测试。 首先,Android的内存机制基于Java,因此采用的是垃圾回收(Garbage Collection, GC)策略。在Java中,内存分配通过`new`关键字...

    Android防止内存溢出浅析.zip

    1. **Android内存管理机制** - **Dalvik/ART虚拟机**:Android系统使用Dalvik或ART虚拟机执行应用程序,它们都有自己的内存管理策略。 - **堆内存**:Java对象主要存储在堆中,Android为每个应用分配了一定量的堆...

    Android内存回收机制

    Android内存回收机制策略 1、GC 2、lowmemorykiller GC GC是java虚拟机的内存...OOM(Out Of Memory) : Android内存管理机制及优化方法(https://www.2cto.com/kf/201805/741791.html) 简言之,即应用占用的最大内存

    基于静态分析方法的Android应用内存泄漏检测模型.pdf

    Android 应用程序的内存泄漏问题较为常见,主要是由于部分开发人员对 Android 内存管理机制理解模糊所致。为了解决内存泄漏的检测问题,首先需要分析 Android 系统的内存管理机制,然后通过代码分析找出 Android ...

    Android App定位和规避内存泄露方法研究

    总结来说,Android应用内存泄露是一个复杂的问题,涉及到Android内存管理机制、应用设计和代码实现等多个方面。通过上述方法,我们可以有效地检测、定位和规避内存泄露问题,从而提升Android应用的性能和稳定性。

    清理释放Android 安卓手机内存空间方法教程

    #### 一、了解Android内存管理机制 首先,我们需要了解Android系统的内存管理机制。Android系统会自动管理应用进程,当系统内存紧张时,会自动终止后台不活跃的应用进程,释放其占用的内存资源。但这种自动管理有时...

    Android3.0内存管理机制分析.pdf

    《Android 3.0内存管理机制分析》这篇文章深入探讨了Android 3.0操作系统中的内存管理机制,该机制是基于Linux 2.6内核进行优化的。文章着重阐述了在这一版本中内存管理的新技术和改进策略。 Android操作系统由系统...

    android 图片下载 有效解决内存溢出问题

    首先,我们需要理解Android内存管理机制。每个Android应用都有一个独立的Dalvik虚拟机实例,分配一定的内存空间。当加载大图或大量小图时,如果超过了这个限制,就会触发OOM。因此,图片的大小、分辨率以及加载方式...

    内存越大Android卡顿的几率越小_1

    内存用完的状况不存在:Android手机理论上不存在“内存用完”的状况,因为Android内存管理机制总会通过自动关闭后台的末位进程,来确保手机总有足够的内存去满足新启动程序的运行需求。 内存大小对程序打开时等待的...

    Android内存优化——常见内存泄露及优化方案

    四、Android内存管理机制 理解Android的内存管理机制也是优化的关键。Android系统采用分代垃圾回收(Garbage Collection, GC),分为年轻代、老年代和持久代。了解这些概念有助于判断何时可能出现内存泄露,以及...

    android获取手机内存大小

    在Android平台上,获取手机内存大小是一项常见的需求,无论是为了优化应用程序性能、监控设备资源使用情况...通过持续学习和实践,我们可以更好地理解和掌握Android内存管理机制,从而编写出更加高效、稳定的应用程序。

Global site tag (gtag.js) - Google Analytics