This document provides an overview of memory management in Android. It begins with an architecture recap and discussion of system startup and memory layout. It then covers the kernel's role in managing physical memory and virtual address spaces. It discusses various kernel interfaces for memory, like memory-mapped registers and DMA. Userspace interfaces like brk and mmap are also covered. Low-memory conditions and the OOM killer are explained. Bionic and malloc/free are summarized. Considerations for app developers around measuring memory usage are provided. Finally, various tools for analyzing memory at the kernel, native, and framework levels are listed.