代码之家  ›  专栏  ›  技术社区  ›  Nick Cardoso

写堆上的合子拷贝是什么?

  •  -1
  • Nick Cardoso  · 技术社区  · 6 年前

    这个 Android memory documentation 描述Android Studio探查器上的合子堆选项(查看分配时),如下所示:

    从Android系统中分叉应用程序进程的copy-on-write堆

    我知道进程是如何从合子中派生出来的,框架类在这里存储和共享,但我不清楚这实际上意味着什么——什么是被复制的?

    这是否意味着,当一个类在这个区域中被改变或加载时,它就以同样的方式在Java中实现一个集合来复制写,或者这是与分叉过程有关的吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Robert    6 年前

    所有“基于合子”的进程都有相同的内存页。

    这些页面不会被复制,而是所有内容都链接到同一个内存页面。这减少了所有“基于合子”的进程在RAM上使用的数量。

    如果其中一个进程将新数据写入这样的页面,则会在实际写入之前自动复制该页面(否则,所有分叉的内存都会更改)。

    这个机制叫做 写入时复制 .