Android

Android内存管理

2017-09-20  本文已影响14人  ProZoom

Android内存管理

APP默认分配内存大小

在Android里,程序内存被分为2部分:

android程序内存(native+dalvik)一般限制在16M,或者24M,36M

gDvm.heapSizeStart = 2 * 1024 * 1024;   // heap初始化大小为2M
gDvm.heapSizeMax = 16 * 1024 * 1024;    // 最大的heap为16M

dalvik的堆栈内存

|Heap(堆)|Stack(栈)
---|---|---|
dalvik作用|dalvik大内存数据区|dalvik内存指令区
数据存储|对象实例数据 方法内部变量(复杂类型) 动态属性|基本数据类型 方法内部变量(简单数据变量) 静态属性 类方法 对象地址 常量

Android的GC如何回收内存

Android的一个应用程序的内存泄露对别的应用程序影响不大。为了能够使得Android应用程序安全且快速的运行,Android的每个应用程序都 会使用一个专有的Dalvik虚拟机实例来运行,它是由Zygote服务进程孵化出来的,也就是说每个应用程序都是在属于自己的进程中运行的。 Android为不同类型的进程分配了不同的内存使用上限,如果程序在运行过程中出现了内存泄漏的而造成应用进程使用的内存超过了这个上限,则会被系统视 为内存泄漏,从而被kill掉,这使得仅仅自己的进程被kill掉,而不会影响其他进程(如果是system_process等系统进程出问题的话,则会 引起系统重启)。

Android系统在运行多个进程时,如果系统资源不足,会强制结束一些进程。优先选择哪个进程来结束是有优先级的。

进程的优先级:

上一篇 下一篇

猜你喜欢

热点阅读