到目前为止,我们看到的大多数示例都使用无缓冲的 I / O.这意味着 每个读或写请求由底层OS直接处理。 由于每个这样的请求,这可以使程序效率低得多 通常会触发磁盘访问,网络活动或其他一些操作 这是相对昂贵的。
为了减少这种开销,Java平台实现了缓冲 I / O流。缓冲输入流从已知的存储区读取数据 作为缓冲区;仅当缓冲区为时,才会调用本机输入API 类似地,缓冲输出流将数据写入缓冲区,并且 仅当缓冲区已满时才会调用本机输出API。
据我所知,磁盘访问,网络活动等操作会导致底层操作系统的内存或执行时间开销。
但问题是,程序读取/写入某个内存区域(缓冲区)如何减少这种开销?
我认为这是一些额外步骤的补充:首先,程序要求操作系统例如从文件读取数据并将其写入缓冲区,然后程序从缓冲区中读取数据。
答案 0 :(得分:2)
您可能知道,使用磁盘驱动器,网络连接或其他设备的IO操作比内存访问慢得多。通过缓冲内存中的IO操作,软件可以减少IO设备上执行的操作数量。