Android采用虚拟内存和分页,支持交换,Android使用显式分配的共享内存区域。
一、垃圾回收
Android的垃圾收集器不带压缩整理功能(Compact),即不会对Heap做碎片整理。Android的内存堆是分代式(Generational)的,意味着它会将所有分配的对象进行分代,然后分代跟踪这些对象。 例如,最近分配的对象属于年轻代(Young Generation)。 当一个对象长时间保持活动状态时,它可以被提升为年老代(Older Generation),之后还能进一步提升为永久代(Permanent Generation)
二、内存分配与回收
Andorid采用弹性分配的策略,随着应用程序的的需要会逐步增加内存,直达最大的内存限制,Android为每个应用程序设置了堆大小的硬性限制。 该限制因设备而异,取决于设备总体可用的RAM。 如果应用程序已达到该限制并尝试分配更多内存,则会收到 OutOfMemoryError。
三、应用切换
应用切换时,会把当前应用的进程缓存起来,采用LRU算法,以便用户再次进入,快速的切换应用,当内存不够时,则从缓存中
取出最少使用的那个进程,不过会综合考虑进程所占用的大小,占用的约大约有可能清除。Linux系统在进程活动停止后就结束该进程,而Android系统则会在内存中尽量长时间的保持应用进程,直到系统需要更多内存为止。
网友评论