- 浏览: 43555 次
- 性别:
- 来自: 济南
文章分类
最新评论
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 定位服务。杀死此类进程将使其他进程无法正常服务。
以上条件缺一不可。
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 定位服务。杀死此类进程将使其他进程无法正常服务。
以上条件缺一不可。
发表评论
-
jni使用总结
2012-12-10 12:52 01.framework/base/core/jni/ 文件分析 ... -
反编译重新打包
2014-04-29 15:19 4251.cmd执行:java -jar apktool.jar d ... -
Android应用程序跳转到系统的各个设置页面
2012-11-22 10:18 0在开发过程中,当我们的程序检测到某个功能项没打开或者没设置的时 ... -
中国天气网的中央气象台实时数据接口之管中窥豹
2012-10-16 15:03 0iPhone上的天气预报用的是Yahoo!数据,实在是闹不住, ... -
android 相对布局中的动态布局
2012-10-16 15:03 0mRlMain = (RelativeLayout) find ... -
Intent的Flag
2012-10-16 15:02 01. Intent it=new Intent(); 2. ... -
ActivityGroup 隐藏键盘失效在配置文件中
2012-10-16 15:02 0在activityGroup中 要添加 getWindow() ... -
android 属性注意事项
2012-10-16 15:02 0设置属性,ro.开头的属性将不能被更改属性值,persist. ... -
Dialog 样式
2012-11-15 19:33 701<style name="OverScan_C ... -
获取屏幕的真是宽高
2012-11-15 19:34 984Display display = getWindowMana ... -
android添加系统属性:Settings.system和SystemProperties
2012-10-16 15:01 0android源码开发中,常常要用到一些全局标志或者说变量,这 ... -
HttpPost HttpGET
2012-10-16 15:00 0String httpUrl = "http://5 ... -
android 内存建议
2012-11-15 19:34 547五、不健壮代码的特征 ... -
Android网络编程之Http通信(cmwap处理)
2012-10-16 14:59 0需要Demo的可以直接下载来看看:http://downloa ... -
Activity切换动画(包括退出)
2012-10-16 14:59 0原来使用Activity.overridePendingTra ... -
Android focus处理
2012-10-16 14:58 0Handling Focus ... -
android 解析json数据格式
2012-10-16 14:58 0json数据格式解析我自己分为两种; 一种是普通的,一种是带 ... -
android 读取assets 目录下的资源方法
2012-10-16 14:57 01。获取资源的输入流 资源文件 sample.txt 位于 ... -
Fragment 一些异常问题
2012-10-16 14:57 0Caused by: java.lang.IllegalArg ... -
PrefernceActivity 自定义样式的方法
2012-10-16 14:57 01.首先在Activity当中设置 public class ...
相关推荐
总结,Android内存管理涉及到操作系统层面的内存分配算法和Java层的垃圾回收机制。循环首次适应和最佳适应算法在实现内存分配时各有优劣,而Android的垃圾回收机制通过分代策略有效管理内存。开发者应掌握这些原理,...
Android内存回收机制策略 1、GC 2、lowmemorykiller GC GC是java虚拟机的内存回收机制。Android GC原理探究https://www.jianshu.com/p/a7f31aee4e2e lowmemorykiller lowmemorykiller总结:...
在深入分析内存泄漏时,阅读《Android系统原理与开发要点详解》这样的资料会非常有帮助。这本书可能会涵盖内存管理的基础知识,如何使用系统提供的工具进行内存分析,以及如何解决各种类型的内存泄漏问题。通过学习...
此外,还介绍了垃圾回收的基本原理和性能优化策略。 第六章《Android进程间通信》:深入解析Android中的IPC(Inter-Process Communication)机制,如Binder、AIDL(Android Interface Definition Language)以及...
LMK的实现位于`drivers/staging/Android/lowmemorykiller.c`,它通过注册为Cache Shrinker来参与内存回收过程。在内存不足时,内核线程kswapd会调用注册的Shrinker回调函数,即`lowmem_shrink`,以回收内存页。 2. ...
- **Memory Management**:内存管理是Android系统优化的关键之一,系统通过回收不再使用的内存空间来提高效率。 ### Component与MainThread - **Component**:在Android中,四大组件包括Activity、Service、...
ListView是Android中常见的用于显示大量数据的控件,但由于其工作原理,如果不妥善处理,很容易引发内存问题。例如: 1. 构造Adapter时未使用convertView:ListView在滚动时,如果每次都新建View对象,而不是复用已...
Android内存管理是Android应用开发中的核心概念之一,它关乎到应用程序的性能、稳定性和用户体验。本文将深入探讨Android系统的内存管理机制,包括内存分配、内存回收、内存优化以及避免内存泄漏等方面。 首先,...
Android 内存泄露分析方法 Android 内存泄露是一个非常常见的问题,它可能会导致应用程序崩溃或性能下降。了解内存泄露的原理和分析方法是非常重要的。 在本文中,我们将介绍使用 Memory Analyzer Tool(MAT)来...
本文主要探讨了Android内存管理机制、内存泄漏的原因以及如何进行内存泄漏的测试。 首先,Android的内存机制基于Java,因此采用的是垃圾回收(Garbage Collection, GC)策略。在Java中,内存分配通过`new`关键字...
这个部分将深入讲解Linux内核如何为Android提供硬件抽象层,以及Android系统中各种驱动程序的工作方式,包括设备驱动、内存管理、进程调度等基础知识。理解这些内容对于优化系统性能和进行底层开发至关重要。 其次...
【Android的JAVA虚拟机和JAVA环境】深入解析了Android应用的执行环境,包括JVM(Java Virtual Machine)和后来的ART(Android RunTime),讲解了类加载、垃圾回收、dex文件以及如何提升应用的启动速度和运行效率。...
CacheShrinker 本身是 Linux 内核用于回收内存页面的一种机制,通常由内核线程 kswapd 监控。 LowMemoryKiller 在模块初始化时注册 CacheShrinker,这样当 kswapd 检测到系统内存不足时,会调用注册的 shrinker 回...
了解其工作原理,如类加载、垃圾回收和优化过程,有助于优化应用性能。 【Android_Camera架构】涉及Android相机系统的底层实现,包括HAL(Hardware Abstraction Layer)和Camera2 API的使用,这对于开发高质量的...
- **内存管理**:Android的内存管理机制包括Dalvik/ART内存分配、垃圾回收以及内存泄漏检测,优化内存使用是提升应用性能的重要方面。 - **安全模型**:Android系统采用权限控制和沙箱机制来保护用户数据和系统...
首先,我们需要理解Android内存管理的基本原理。Android应用程序基于Java语言,因此其内存机制与Java相似。Java的垃圾回收(GC)机制会自动回收不再使用的对象,但并不意味着开发者可以完全忽视内存管理。Android系统...
此外,还有Android运行时(ART)的优化过程,如提前编译(AOT)和垃圾回收机制。 以上内容仅是Android底层开发的冰山一角,实际涉及的知识点远比这更广泛和深入。对于开发者来说,理解和掌握这些原理有助于提升...
总之,Android应用的内存管理涉及多个层面,从使用合适的工具进行监控,到理解内存分配原理,再到代码优化,每个环节都至关重要。通过熟练掌握MAT等工具,结合良好的编程习惯,开发者可以有效预防和解决内存溢出问题...
ART还引入了垃圾回收机制和内存优化,有助于改善应用性能。 三、Android应用程序开发 Android应用主要由Java语言编写,遵循MVC(Model-View-Controller)或MVVM(Model-View-ViewModel)设计模式。XML用于定义界面...