Linux写时复制技能(copyITeye - 千亿集团

Linux写时复制技能(copyITeye

2019年03月27日15时43分55秒 | 作者: 昆卉 | 标签: 容器,目标,内存 | 浏览: 2450

什么是Copy-On-Write?

         简称COW,是一种用于程序设计中的优化战略。其基本思路是,从一开端咱们都在同享同一个内容,当某个人想要修正这个内容的时分,才会真实把内容Copy出去构成一个新的内容然后再改,这是一种延时懒散战略。

 

什么是CopyOnWrite容器?

         CopyOnWrite容器即写时仿制的容器。浅显的了解是当咱们往一个容器增加元素的时分,不直接往当时容器增加,而是先将当时容器进行Copy,仿制出一个新的容器,然后新的容器里增加元素,增加完元素之后,再将原容器的引证指向新的容器。这样做的长处是咱们可以对CopyOnWrite容器进行并发的读,而不需要加锁,因为当时容器不会增加任何元素。所以CopyOnWrite容器也是一种读写别离的思维,读和写不同的容器。

 

CopyOnWrite的缺陷:

         CopyOnWrite容器有许多长处,可是一起也存在两个问题,即内存占用问题和数据一致性问题。

         内存占用问题。因为CopyOnWrite的写时仿制机制,所以在进行写操作的时分,内存里会一起驻守两个目标的内存,旧的目标和新写入的目标(留意:在仿制的时分仅仅仿制容器里的引证,仅仅在写的时分会创立新目标增加到新容器里,而旧容器的目标还在运用,所以有两份目标内存)。假如这些目标占用的内存比较大,比如说200M左右,那么再写入100M数据进去,内存就会占用300M,那么这个时分很有或许形成频频的Yong GC和Full GC。之前咱们体系中运用了一个效劳因为每晚运用CopyOnWrite机制更新大目标,形成了每晚15秒的Full GC,运用呼应时刻也随之变长。

         数据一致性问题。CopyOnWrite容器只能确保数据的终究一致性,不能确保数据的实时一致性。所以假如你期望写入的的数据,立刻能读到,请不要运用CopyOnWrite容器。

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表千亿集团立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    Linux链接指令ITeye

    链接,六硬,文件
  • 2

    Linux写时复制技能(copyITeye

    容器,目标,内存
  • 3
  • 4
  • 5
  • 6

    Centos更新163源ITeye

    更新,下载,备份
  • 7
  • 8

    socke了解 内核调用timeITeye

    衔接,能够,服务器
  • 9

    linux下创立用户(转载)ITeye

    用户,用户组,创立
  • 10

    Dos指令之SET指令ITeye

    指令,环境变量,扩展