Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 频繁冲洗的优化()_Java_Performance_Io_Nio_Flush - Fatal编程技术网

Java 频繁冲洗的优化()

Java 频繁冲洗的优化(),java,performance,io,nio,flush,Java,Performance,Io,Nio,Flush,我想不断地将数据写入光盘。 我希望经常将数据刷新到光盘上(例如,每64MB的数据块)。你能提出什么解决方案 我认为标准OutputStream可能比nio.channels更好,因为它更简单。如果您正在编写一个连续的数据流,例如附加到文件的末尾,则偶尔调用一次带有flush()的常规OutputStream与nio一样好或更好。如果nio能给你带来很大的优势,那就是在一个文件的不同区域编写许多小块。在这种情况下,您可以使用内存映射文件,这可能是对旧式写入的改进。然而,从这个问题上,我了解到您处理

我想不断地将数据写入光盘。 我希望经常将数据刷新到光盘上(例如,每64MB的数据块)。你能提出什么解决方案


我认为标准OutputStream可能比nio.channels更好,因为它更简单。

如果您正在编写一个连续的数据流,例如附加到文件的末尾,则偶尔调用一次带有
flush()
的常规
OutputStream
nio
一样好或更好。如果
nio
能给你带来很大的优势,那就是在一个文件的不同区域编写许多小块。在这种情况下,您可以使用内存映射文件,这可能是对旧式写入的改进。然而,从这个问题上,我了解到您处理的是连续的数据流。我建议您实现常规的解决方案,它为您提供更好的代码,并且只有在您发现性能不足时才搜索替代方案。在这种情况下,我不希望
nio
产生明显的变化。

也许您可以提供一个示例(到目前为止您尝试了什么)?我尝试在每次写入后使用nio.channel.write()和force()。每次写入都是固定大小的(例如64MB)。在这一刻,我正在测试FileOutputStream.write()和FileOutputStream.flush()的性能,当我在每次写入性能下降60-70%后使用force()时,您有什么问题吗?您是否对经常写入磁盘的速度变慢感到惊讶?我正在以固定大小的数据块将连续的数据流写入文件末尾,同时从文件中的其他位置读取连续的数据块。读和写都同样重要。如果您一次从一个地方读,并且访问是从连续的位置进行的,那么您仍然可以使用旧的
io
软件包。