【发布时间】:2016-06-04 06:32:03
【问题描述】:
到目前为止,我们看到的大多数示例都使用无缓冲 I/O。这意味着 每个读取或写入请求都由底层操作系统直接处理。 这会使程序的效率大大降低,因为每个这样的请求 经常触发磁盘访问、网络活动或其他一些操作 这是相对昂贵的。
为了减少这种开销,Java 平台实现了缓冲 I/O 流。缓冲的输入流从已知的内存区域读取数据 作为缓冲区; 本地输入 API 仅在缓冲区被调用时调用 空。类似地,缓冲输出流将数据写入缓冲区,并且 仅在缓冲区已满时调用本机输出 API。
我了解磁盘访问、网络活动等操作会导致底层操作系统的内存或执行时间开销。
但问题是程序读取/写入到某个内存区域(缓冲区)如何减少这种开销?
我认为这是增加了几个额外步骤:首先,程序请求操作系统,例如,从文件中读取数据并将其写入缓冲区,然后程序从缓冲区中读取数据。
【问题讨论】:
-
嗯,我的 RAM 比我的 HDD 快得多,并且与 HDD 或 SSD 相比,与 CPU 的连接更好。
-
除了@Code-Apprentice 的回答,您还可以查看stackoverflow.com/questions/9648811/…
标签: java inputstream outputstream bufferedwriter bufferedinputstream