通常、なんの考えも無しにプログラムがファイルに書きこみを行った後、運悪くシステムがクラッシュするとファイルが失われる可能性がある。通常のファイル書き込みはファイルに書き込んでいるように見えて実はバッファがメモリ上に蓄えているだけだからだ。このメモリ上に蓄えられた、いずれストレージに書き込むデータのことをダーティページと言う。何もしなくてもダーティページに書きこまれたデータはカーネルが定期的にストレージに書き込むのだが、若干のタイムラグがある。この間にクラッシュするとデータが失われるわけだ。データが書き込んだ直後、すぐストレージに書き出したい場合は fsync システムコールを呼ぶ必要がある。 C や C++ といった低レイヤーを扱う言語なら fsync を呼ぶだけで良いが、Java のような高級言語でどうやって fsync を発動させればよいか。 通常のファイル書き込み 下記のような一般的