CopyOnWriteArrayList Java CopyOnWrite_黄晓宇的博客-CSDN博客
Redis持久化 《Redis入门指南》 BGSAVE命令fork子进程来进行持久化, 使用的是CopyOnWrite技术。
1 fork开始时,内存就是readonly的了,子进程复制读的是fork时刻的快照数据。
2 主进程如果有写入会复制一份该修改到的内存页、新内存页是可读写的、原内存页仍然readonly给子进程用、然后将指针指向新的这个内存页。
这样主进程只修改的这一部分后面读写会到新内存页、其他还是会到原内存页的,而子进程持久化一直是用的原内存页,两者同时进行互相不阻塞。
且内存使用上也不会是把主进程的内存复制了一模一样大小的两份,写操作少的话,复制的内存页只占很少一部分。
Redis-关于RDB的几点顿悟-COW(Copy On Write)_lh87270202的博客-CSDN博客_redis的copyonwrite