标签:
转自http://aronlulu.iteye.com/blog/1018370
读取文件大小:1.45G
第一种,OldIO:
耗时70.79s
第二种,newIO:
耗时47.24s
第三种,RandomAccessFile:
耗时46.65
第四种,MappedByteBuffer:
耗时:36
前三种读法对应的资源占用图如下:
相对于最后一种内存直接映射方式前面的测试其实无意义,基本秒杀。。。。。
对于很大的文件直接分块映射时内存会不够,这是因为MappedByteBuffer未被释放造成的,sun未提供直接回收MappedByteBuffer区域的方法,这个时候有两种方法解决,第一种比较愚笨的:
第二种网上找来的,利用反射调用clean方法:
以上两种方法感觉都别扭,还有就是可以自己分割成物理文件再循环调用,这个也不太美观。
速度也会减慢好多。
标签:
原文地址:http://www.cnblogs.com/nightsu/p/5939002.html