先说些题外话,Java的内存管理一直是让人又爱又恨玩意。学生时代写Java程序主要考虑的只是实现算法、完成功能,偶尔碰到OutofMemory也是递归搞成死循环。什么垃圾回收、内存管理统统交给JVM去烦恼。上班之后再用Java发现完全不是那么回事,大访问量的情况下如何减少fullgc和停顿时间,内存管理无法由程序员控制和干预、甚至无法获知究竟哪个部分用了多少内存有时着实让人有些抓狂。各位可能无法想象当我们撞大运般的用jdk6_u12代替之前的某个版本解决了困扰多时的内存在高峰期无法正常回收的问题(后面会提到)时,那种如释重负却又心有不甘的感觉。因为存在对于内存管理丝毫插不上手的无力感,从那时起,我就一直在寻找一种把数据丢到内存里但又能够对其有所控制的方法,mmap算是不错的选择。