Linux内存管理(基础概念)
翻译自:https://perfetto.dev/docs/case-studies/memory#heapprofd
想看一下项目在真机上的表现,所以工作之余用了Perfetto来做项目的性能测试。阅读官方文档的时候发现了这一章节介绍了Linux内存管理的一些基础概念,所以就简单翻译了一下。
从内核的角度,内存被划分为等大小4KiB的块,这些块被称为页(pages)。
这些页被组织于连续的虚拟空间中,此空间称为VMA(Virtual Memory Area)。
当一个进程通过 mmap()
系统调用请求内存时,VMA就会被创建。一般情况下,应用不会直接调用mmap(),而是通过内存分配器间接调用,像是
C 的 malloc()
, C++ 的 operator new()
或是 Java
的 new X()
等等。
VMA可以被分为两种类型:文件后备页(file-backed)与匿名页(anonymous)。