【发布时间】:2017-09-29 07:25:59
【问题描述】:
我正在使用 BufferedWriter 将文本写入 Java 文件。但是,我在构造函数中提供了自定义缓冲区大小。问题是,它以我给出的任何大小的块写入文件(例如,如果我将缓冲区大小设为 8KB,则文件写入一次为 8KB)。但是,当我查看 bufferedwriter 对象(使用 YourKit 分析器)占用的内存时,它实际上是给定缓冲区大小的两倍(在本例中为 16KB)。
我试图查看内部实现以了解为什么会发生这种情况,我发现它正在创建一个具有给定大小的 char 数组。而且当它写入数组时,它占用两倍的缓冲区大小是有意义的,因为每个 char 占用 2 个字节。
我的问题是,在这种情况下,BufferedWriter 是如何管理只写入 8KB 的,它在缓冲区中存储了 16KB。这在技术上正确吗?因为每次它只刷新 8KB(一半),即使它有 16KB 的缓冲区。
【问题讨论】:
标签: java bufferedwriter