Android使用虚拟内存和分页,不支持交换
垃圾收集
无论是ART还是Dalvik虚拟机,都和众多Java虚拟机一样,属于一种托管内存环境(程序员不需要显示的管理内存的分配与回收,交由系统自动管理)。托管内存环境会跟踪每个内存分配, 一旦确定程序不再使用一块内存,它就会将其释放回堆中,而无需程序员的任何干预。回收托管内存环境中未使用内存的机制称为垃圾回收。
垃圾收集有两个目标:
在程序中查找将来无法访问的数据对象;
回收这些对象使用的资源。
Android的垃圾收集器不带压缩整理功能(Compact),即不会对Heap做碎片整理。
Android的内存堆是分代式(Generational)的,意味着它会将所有分配的对象进行分代,然后分代跟踪这些对象。例如,最近分配的对象属于年轻代(Young Generation)。当一个对象长时间保持活动状态时,它可以被提升为年老代(Older Generation),之后还能进一步提升为永久代(Permanent Generation)。
每一代的对象可占用的内存总量都有其专用上限。每当一代开始填满时,系统就会执行垃圾收集事件以试图释放内存。垃圾收集的持续时间取决于它在收集哪一代的对象以及每一代中有多少活动对象。
虽然垃圾收集速度非常快,但它仍然会影响应用程序的性能。通常情况下你不需要控制代码中何时执行垃圾收集事件。系统有一组用于确定何时执行垃圾收集的标准。满足条件后&