JVM的垃圾清除算法,众所周知,在年轻代用的都是 复制清除算法,这也就是为什么年轻代分为了S0和S1 两个大小一样的内存空间。 S0满了,就复制到S1去,然后清空S0,当然,GC还会整理好内存,使其连续起来,那么还有哪些常用软件或框架用到了这个双缓冲机制呢?
1 MySql的Redo Log
我们知道,在InnoDB存储引擎的数据目录下会有两个名为ib_logfile0和ib_logfile1的文件,这
就是InnoDB的重做日志文件(redo log file),它记录了对于InnoDB存储引擎的事务日志。
重做日志文件的作用是什么?
当InnoDB的数据存储文件发生错误时,重做日志文件就能派上用场。InnoDB存储引擎可以使用重
做日志文件将数据恢复为正确状态,以此来保证数据的正确性和完整性。
为了得到更高的可靠性,用户可以设置多个镜像日志组,将不同的文件组放在不同的磁盘上,以此
来提高重做日志的高可用性。
重做日志文件组是如何写入数据的?
每个InnoDB存储引擎至少有1个重做日志文件组(group),每个文件组下至少有2个重做日志文件,如默
认的ib_logfile0和ib_logfile1。
在日志组中每个重做日志文件的大小一致,并以循环写入的方式运行。
InnoDB存储引擎先写入重做日志文件1,当文件被写满时,会切换到重做日志文件2,再当重做日
志文件2也被写满时,再切换到重做日志文件1。