前些天组里发了一个邮件,讲了一下Buffer和Cache的区别问题。当时我还真是蒙了,自己从来没想过这个问题,尽管可能潜意识里大概的明白它们的区别,不过没刻意的去思考它。它们的中文翻译也很相近,一个是缓冲,一个是缓存。
到底有什么区别呢?
简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的。它们所处的层次不一样,buffer处在内存和IO设备(如磁盘,U盘)之间。而cache处在cpu和内存之间(包括内存本身)。
在JAVA开发中,这两个概念又有所拓展。buffer一般用于批量的写入某种慢速(或者说开销较大)空间,如StringBuffer,可以避免new很多一次性的Strig。
而cache则运用更广泛了,比如从db中读取数据后,我们通常喜欢把它放在一个HashMap里面(相当于一个Cache),下次读之前可以先检查HashMap中是否已经包含欲读取的数据,若包含就直接返回即可,这样减小了读db的开销。
转载于:https://blog.51cto.com/spinlock/406138