什么是Zygote写时复制堆?

时间:2018-05-24 11:08:04

标签: android android-studio memory heap-memory

Android memory documentation在Android Studio探查器上描述了Zygote堆选项(在查看分配时):

  

在Android系统中分叉应用程序进程的写时复制堆

我理解如何从Zygote分叉进程,并且这里存储和共享框架类,但我不清楚这实际意味着什么 - 被复制的是什么?

这是否意味着当在这个区域中更改或加载类时,它会像在Java中实现集合一样进行copy-on-write,或者这与分叉过程有关?

1 个答案:

答案 0 :(得分:2)

所有"以Zygote为基础的"进程的内存页面相同。

不会复制这些页面,而是将所有页面链接到同一个内存页面。这减少了所有基于Zygote的"过程

如果其中一个进程将新数据写入此类页面,则会在写入实际发生之前自动复制页面(因为否则将更改所有分支的内存)。

此机制称为写时复制