`

android 内存回收原理

 
阅读更多
1. ActivityManagerService 集中管理所有进程的内存资源分配。所有进程需要申请或释放内存之前必须调用 ActivityManagerService 对象,获得其“许可”之后才能进行下一步操作,或者 ActivityManagerService 将直接“代劳”。类 ActivityManagerService 中涉及到内存回收的几个重要的成员方法如 下:trimApplications(),updateOomAdjLocked(),activityIdleInternal() 。这几个成员方法主要负责 Android 默认的内存回收机制,若 Linux 内核中的内存回收机制没有被禁用,则跳过默认回收。

2.可参见 ActivityManagerService.java。
回收动作入口:activityIdleInternal()
Android 系统中内存回收的触发点大致可分为三种情况。第一,用户程序调用 StartActivity(), 使当前活动的 Activity 被覆盖;第二,用户按 back 键,退出当前应用程序;第三,启动一个新的应用程序。这些能够触发内存回收的事件最终调用的函数接口就是 activityIdleInternal()。当 ActivityManagerService 接收到异步消息 IDLE_TIMEOUT_MSG 或者 IDLE_NOW_MSG 时,activityIdleInternal() 将会被调用

3.进程被杀死的条件是:
● 必须是非 persistent 进程,即非系统进程;
● 必须是空进程,即进程中没有任何 activity 存在。如果杀死存在 Activity 的进程,有可能关闭用户正在使用的程序,或者使应用程序恢复的时延变大,从而影响用户体验;
● 必须无 broadcast receiver。运行 broadcast receiver 一般都在等待一个事件的发生,用户并不希望此类程序被系统强制关闭;
● 进程中 service 的数量必须为 0。存在 service 的进程很有可能在为一个或者多个程序提供某种服务,如 GPS 定位服务。杀死此类进程将使其他进程无法正常服务。
以上条件缺一不可。


分享到:
评论

相关推荐

    android模拟内存分配与回收

    总结,Android内存管理涉及到操作系统层面的内存分配算法和Java层的垃圾回收机制。循环首次适应和最佳适应算法在实现内存分配时各有优劣,而Android的垃圾回收机制通过分代策略有效管理内存。开发者应掌握这些原理,...

    Android内存回收机制

    Android内存回收机制策略 1、GC 2、lowmemorykiller GC GC是java虚拟机的内存回收机制。Android GC原理探究https://www.jianshu.com/p/a7f31aee4e2e lowmemorykiller lowmemorykiller总结:...

    android系统分析内存泄露测试

    在深入分析内存泄漏时,阅读《Android系统原理与开发要点详解》这样的资料会非常有帮助。这本书可能会涵盖内存管理的基础知识,如何使用系统提供的工具进行内存分析,以及如何解决各种类型的内存泄漏问题。通过学习...

    android底层原理课件(500强内部)

    此外,还介绍了垃圾回收的基本原理和性能优化策略。 第六章《Android进程间通信》:深入解析Android中的IPC(Inter-Process Communication)机制,如Binder、AIDL(Android Interface Definition Language)以及...

    android内存管理了解.pptx

    LMK的实现位于`drivers/staging/Android/lowmemorykiller.c`,它通过注册为Cache Shrinker来参与内存回收过程。在内存不足时,内核线程kswapd会调用注册的Shrinker回调函数,即`lowmem_shrink`,以回收内存页。 2. ...

    android-framework-Android系统原理与开发

    - **Memory Management**:内存管理是Android系统优化的关键之一,系统通过回收不再使用的内存空间来提高效率。 ### Component与MainThread - **Component**:在Android中,四大组件包括Activity、Service、...

    android内存的溢出和泄漏问题

    ListView是Android中常见的用于显示大量数据的控件,但由于其工作原理,如果不妥善处理,很容易引发内存问题。例如: 1. 构造Adapter时未使用convertView:ListView在滚动时,如果每次都新建View对象,而不是复用已...

    Android内存管理

    Android内存管理是Android应用开发中的核心概念之一,它关乎到应用程序的性能、稳定性和用户体验。本文将深入探讨Android系统的内存管理机制,包括内存分配、内存回收、内存优化以及避免内存泄漏等方面。 首先,...

    android 内存泄露 分析方法

    Android 内存泄露分析方法 Android 内存泄露是一个非常常见的问题,它可能会导致应用程序崩溃或性能下降。了解内存泄露的原理和分析方法是非常重要的。 在本文中,我们将介绍使用 Memory Analyzer Tool(MAT)来...

    Android内存泄漏.doc

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

    韩超Android原理培训课件.rar

    这个部分将深入讲解Linux内核如何为Android提供硬件抽象层,以及Android系统中各种驱动程序的工作方式,包括设备驱动、内存管理、进程调度等基础知识。理解这些内容对于优化系统性能和进行底层开发至关重要。 其次...

    android系统原理与开发要点详解

    【Android的JAVA虚拟机和JAVA环境】深入解析了Android应用的执行环境,包括JVM(Java Virtual Machine)和后来的ART(Android RunTime),讲解了类加载、垃圾回收、dex文件以及如何提升应用的启动速度和运行效率。...

    android 内存分析

    CacheShrinker 本身是 Linux 内核用于回收内存页面的一种机制,通常由内核线程 kswapd 监控。 LowMemoryKiller 在模块初始化时注册 CacheShrinker,这样当 kswapd 检测到系统内存不足时,会调用注册的 shrinker 回...

    Android底层原理培训课件全套(500强内部)

    了解其工作原理,如类加载、垃圾回收和优化过程,有助于优化应用性能。 【Android_Camera架构】涉及Android相机系统的底层实现,包括HAL(Hardware Abstraction Layer)和Camera2 API的使用,这对于开发高质量的...

    Android_系统原理开发要点

    - **内存管理**:Android的内存管理机制包括Dalvik/ART内存分配、垃圾回收以及内存泄漏检测,优化内存使用是提升应用性能的重要方面。 - **安全模型**:Android系统采用权限控制和沙箱机制来保护用户数据和系统...

    Android防止内存溢出浅析

    首先,我们需要理解Android内存管理的基本原理。Android应用程序基于Java语言,因此其内存机制与Java相似。Java的垃圾回收(GC)机制会自动回收不再使用的对象,但并不意味着开发者可以完全忽视内存管理。Android系统...

    android 底层开发原理ppt

    此外,还有Android运行时(ART)的优化过程,如提前编译(AOT)和垃圾回收机制。 以上内容仅是Android底层开发的冰山一角,实际涉及的知识点远比这更广泛和深入。对于开发者来说,理解和掌握这些原理有助于提升...

    android内存管理-MAT与防范手段

    总之,Android应用的内存管理涉及多个层面,从使用合适的工具进行监控,到理解内存分配原理,再到代码优化,每个环节都至关重要。通过熟练掌握MAT等工具,结合良好的编程习惯,开发者可以有效预防和解决内存溢出问题...

    Android系统原理及开发要点详解pdf

    ART还引入了垃圾回收机制和内存优化,有助于改善应用性能。 三、Android应用程序开发 Android应用主要由Java语言编写,遵循MVC(Model-View-Controller)或MVVM(Model-View-ViewModel)设计模式。XML用于定义界面...

Global site tag (gtag.js) - Google Analytics