我现在用BufferedWriter来写入文件,设了8k的缓冲区。
我现在想提高写入的效率,是不是缓冲区设置越大越好啊?我也知道BufferedWriter的缓冲区设置增大,能减少写IO的次数,可是会多消耗内存,增加GC。但是不知道这个两者的平衡点在哪里,这个缓冲区大小的设置,是否有什么技巧。求大神们指导!! 写出文件大概在5G左右。内存绝对够用。BufferedWriter缓冲区大小

解决方案 »

  1.   

    一个数组对象,如果在while中被多次使用的话,但这个对象的话应该下一次循环的时候就符合垃圾回收机制可以被回收了吧。
    最后一个输出流flush();
    在这之前数据应该都存在输出流中。5G不会是一个文件吧。。PS:我一般都习惯于设置2K,个人习惯
      

  2.   

    5G是一个文件!
    那就是说,其实缓冲区的大小只是影响写到输出流的频率,其实输出流什么时候写IO和怎么写IO是没有关系的,对吧?
      

  3.   

    我刚刚看了一下StreamEncoder,最后还是各种write到输出流中,只有在flush才会调输出流flush的方法。真搞不懂他是怎么一个操作的……这个输出流写文件到底是一个什么规则呢?