我正在使用BufferedWriter将文本写入Java中的文件。但是,我在构造函数中提供了自定义缓冲区大小。问题在于,它以大小写的方式向文件写入文件(例如,如果我将缓冲区大小设为8KB,则文件将为8KB写入一次)。但是,当我查看缓冲写入对象占用的内存(使用YourKit分析器)时,它实际上是给定缓冲区大小的两倍(本例中为16KB)。BufferedWriter缓冲区大小和占用内存
我试着看看内部实现,看看为什么会发生这种情况,我看到它正在创建一个给定大小的char数组。当它写入数组时,它占用两倍的缓冲区大小是有意义的,因为每个char占用2个字节。
我的问题是,在这种情况下,BufferedWriter如何管理只写8KB,它在缓冲区中存储16KB。这在技术上是正确的吗?因为每次只刷新8KB(一半),即使它有16KB的缓冲区。
谢谢@Stephen C.现在有了更好的见解 – Ravi