Android源码中的内存管理机制36
Android操作系统基于Linux内核,因此它继承了Linux的内存管理机制,同时针对移动设备的特点进行了一系列的优化。在Android源码中,内存管理主要由以下几个组件负责:
LowMemoryKiller:负责在内存不足时杀掉进程,以释放内存。
Activity Manager:负责管理应用程序的生命周期,包括启动、停止和销毁活动。
Zygote:负责创建所有Android应用程序的进程。
Dalvik虚拟机:负责管理应用程序的内存,包括堆内存和栈内存。
低内存杀手(LowMemoryKiller)
LowMemoryKiller是一个内核线程,负责监视系统的内存使用情况。当系统内存不足时,LowMemoryKiller会根据预先定义的策略杀死进程,以释放内存。策略包括:
调整内存:杀死具有最高调整内存值的进程。
杀掉前台进程:杀死处于前台的进程。
杀掉最近最少使用的进程:杀死最近最少使用的进程。
活动管理器(Activity Manager)
活动管理器是一个系统服务,负责管理应用程序的生命周期。当用户启动一个应用程序时,活动管理器会创建一个新的进程来运行该应用程序。当用户关闭一个应用程序时,活动管理器会销毁该应用程序的进程。
活动管理器还负责管理应用程序的内存使用。它会将应用程序分为不同的内存级别,并根据内存使用情况将它们移动到不同的内存级别。内存级别较高的应用程序将被赋予更高的内存优先级。
Zygote
Zygote是一个特殊的进程,负责创建所有Android应用程序的进程。当一个应用程序启动时,Zygote会创建一个新的进程并加载应用程序的代码。然后,新进程将执行应用程序的代码。
Zygote使用一种称为写时复制(Copy-on-Write)的技术来优化内存使用。当一个应用程序启动时,Zygote会创建一个应用程序代码的副本。然后,每个应用程序进程都可以使用自己的应用程序代码副本。只有当一个应用程序修改其应用程序代码时,才会创建应用程序代码的新副本。
Dalvik虚拟机(DVM)
Dalvik虚拟机是一个基于寄存器的虚拟机,用于在Android设备上运行Java应用程序。DVM负责管理应用程序的内存,包括堆内存和栈内存。
DVM使用一种称为垃圾回收(GC)的技术来管理堆内存。GC会自动释放不再使用的对象,以释放内存。DVM还使用一种称为即时编译(JIT)的技术来优化应用程序的性能。JIT会将Java字节码转换为本地机器代码,以提高应用程序的执行速度。
2024-10-11
上一篇:Android 系统编译指南