Java I/O ストリームのバッファリング メカニズムはどのように実装されていますか?

王林
リリース: 2024-04-13 15:06:02
オリジナル
1073 人が閲覧しました

Java I/O ストリームは、BufferedInputStream および BufferedOutputStream を通じてバッファリング メカニズムを提供し、読み取りおよび書き込みのパフォーマンスを向上させます。 BufferedInputStream は、基礎となる入力ストリームからデータを読み取り、それを内部バッファーに保存し、小さなデータ ブロックを頻繁に読み取る際のパフォーマンスを向上させます。 BufferedOutputStream はデータを内部バッファーに書き込み、バッファーがいっぱいであるか、すぐにフラッシュする必要がある場合は、基になる出力ストリームにデータを書き込み、大きなデータ ブロックの頻度の低い書き込みのパフォーマンスを最適化します。

Java I/O流的缓冲机制是如何实现的?

#Java I/O ストリームのバッファリング メカニズム

バッファリング メカニズムの概要

Java I/O ストリームは、データのブロック (バッファ) をメモリに保存することで読み取りおよび書き込みのパフォーマンスを向上させるバッファリング メカニズムを提供します。バッファー上で操作する場合、I/O 操作は基になるファイルまたはストリームに対して直接実行されるのではなく、バッファー上で実行されます。これにより、システムコールとコンテキスト切り替え時間が節約されます。

バッファリング機構の実装

Java I/O ストリームのバッファリング機構は、

BufferedInputStreamBufferedOutputStream を使用して入力されます。 /output ストリームの実装。これらのストリームには、データのブロックをメモリに保存するための内部バッファが含まれています。

BufferedInputStream

BufferedInputStream データを読み取り、内部バッファに保存します。バッファーがいっぱいになると、ストリームは基礎となる入力ストリームから別のデータ ブロックを読み取り、バッファーを埋めて、バッファーの最初のバイトを返します。これにより、小さなデータ ブロックを頻繁に読み取る際のパフォーマンスが向上します。

BufferedOutputStream

BufferedOutputStream データを内部バッファに書き込みます。バッファーがいっぱいであるか、データをすぐにフラッシュする必要がある場合、ストリームはバッファー内のデータを基礎となる出力ストリームに書き込みます。これにより、大きなデータ ブロックへの頻度の低い書き込みのパフォーマンスが最適化され、システム コールの数が削減されます。

実践例

BufferedInputStream を使用してテキスト ファイルを読み取る次のコードを考えてみましょう。例、BufferedInputStream

データを内部バッファーにチャンク単位で読み取ります。これにより、小さなデータ チャンクを頻繁に読み取るパフォーマンスが向上します。

注意事項

バッファ サイズはパフォーマンスに影響します。バッファを大きくするとシステムコールの数は減りますが、消費するメモリも増えます。

  • BufferedInputStream
  • クラスと
  • BufferedOutputStream クラスのバッファーは、java.io.BufferedInputStream.DEFAULT_BUFFER_SIZE (デフォルトは 8192 バイト) によって指定されます。ストリーム インスタンスを構築するときにこの値をオーバーライドできます。 flush()
  • メソッドを使用する場合、
  • BufferedOutputStream はバッファ内のデータを基になる出力ストリームにすぐに書き込みますが、BufferedInputStream はバッファは、すべてのデータがバッファから読み取られるとき、またはストリームが閉じられるときにフラッシュされます。

以上がJava I/O ストリームのバッファリング メカニズムはどのように実装されていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート