84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
java中,读取磁盘文件时,通常都使用BufferedInputStream包装FileInputStream。但是操作系统内核读取磁盘文件时,不是会将内存作为磁盘文件的缓冲区吗?那为什么还要在程序里自己使用缓冲区??
小伙看你根骨奇佳,潜力无限,来学PHP伐。
正確に言うと、オペレーティング システムは、データ セキュリティを保護するためにユーザー領域とシステム領域を分離する必要があるため、ファイルを読み取るときに、そのファイルをシステム領域に読み取り、それをアプリケーションのユーザーにコピーします。プロセス空間、つまり質問で述べたように、ユーザープロセスがオペレーティングシステム空間のバッファに直接アクセスできる場合、オペレーティングシステムは安全ではありません。
FileInputStream/FileOutputStream は、read()/write() が呼び出されるたびに IO 操作をトリガーします。 BufferedInputStream/BufferedOutputSteam の read()/write() 呼び出しは、毎回 IO 操作をトリガーするわけではなく、内部バッファーに書き込むだけです。IO 操作は、内部バッファーがいっぱいであるか、flush() が呼び出された場合にのみトリガーされます。 。
IO 操作が少ないほど、パフォーマンスは向上します。
IO を実行するとき、JVM は独自のヒープ領域にバッファとしてバイト配列を作成します。一般に、ユーザーは JVM を介してメモリ (ダイレクトバッファ) を呼び出すことはできません。ヒープ領域のバッファとメモリ間のやり取りは、次のように管理されます。 JVM。このようにして、GC メカニズムや Java の高レベルのカプセル化 API などの JVM の利点を活用できます。
オペレーティング システムは、ハードディスク上のファイルをメモリに読み込んでキャッシュとして使用するだけでなく、メモリ内のデータをキャッシュするためにメモリ内に別のスペースを開きます。 どういう意味ですか? 管理と効率化のため。 メモリとメモリ間のデータ交換速度は、メモリとハードディスク間のデータ交換速度よりも 2 桁高速です。 メモリ上のプロセスがデータを必要とする場合、メモリキャッシュに一致するデータがあればキャッシュ領域から直接取得されます。そうでない場合はハードディスクから読み取られます。 (書く場合も同様です)
IO 操作における Java のキャッシュ設計の重要性はここにもあります。違いは、Java によってキャッシュされたデータは、Java の現在の実行環境でのみ使用できることです。 これは、オペレーティング システムのキャッシュから頻繁にデータを取得する場合と比較して、実行効率が向上します。これは、コードで頻繁な IO 操作が必要な場合に特に当てはまります。
いわゆるバッファのほとんどはハードディスクハードウェアによってインターフェース領域にカプセル化されており、バッファ領域は大きくありません。オペレーティング システムは、ファイルの内容をメモリにキャッシュしません。
ハードドライブの速度が十分ではないからです。
正確に言うと、オペレーティング システムは、データ セキュリティを保護するためにユーザー領域とシステム領域を分離する必要があるため、ファイルを読み取るときに、そのファイルをシステム領域に読み取り、それをアプリケーションのユーザーにコピーします。プロセス空間、つまり質問で述べたように、ユーザープロセスがオペレーティングシステム空間のバッファに直接アクセスできる場合、オペレーティングシステムは安全ではありません。
FileInputStream/FileOutputStream は、read()/write() が呼び出されるたびに IO 操作をトリガーします。
BufferedInputStream/BufferedOutputSteam の read()/write() 呼び出しは、毎回 IO 操作をトリガーするわけではなく、内部バッファーに書き込むだけです。IO 操作は、内部バッファーがいっぱいであるか、flush() が呼び出された場合にのみトリガーされます。 。
IO 操作が少ないほど、パフォーマンスは向上します。
IO を実行するとき、JVM は独自のヒープ領域にバッファとしてバイト配列を作成します。一般に、ユーザーは JVM を介してメモリ (ダイレクトバッファ) を呼び出すことはできません。ヒープ領域のバッファとメモリ間のやり取りは、次のように管理されます。 JVM。このようにして、GC メカニズムや Java の高レベルのカプセル化 API などの JVM の利点を活用できます。
オペレーティング システムは、ハードディスク上のファイルをメモリに読み込んでキャッシュとして使用するだけでなく、メモリ内のデータをキャッシュするためにメモリ内に別のスペースを開きます。
どういう意味ですか? 管理と効率化のため。
メモリとメモリ間のデータ交換速度は、メモリとハードディスク間のデータ交換速度よりも 2 桁高速です。
メモリ上のプロセスがデータを必要とする場合、メモリキャッシュに一致するデータがあればキャッシュ領域から直接取得されます。
そうでない場合はハードディスクから読み取られます。 (書く場合も同様です)
IO 操作における Java のキャッシュ設計の重要性はここにもあります。
違いは、Java によってキャッシュされたデータは、Java の現在の実行環境でのみ使用できることです。
これは、オペレーティング システムのキャッシュから頻繁にデータを取得する場合と比較して、実行効率が向上します。
これは、コードで頻繁な IO 操作が必要な場合に特に当てはまります。
いわゆるバッファのほとんどはハードディスクハードウェアによってインターフェース領域にカプセル化されており、バッファ領域は大きくありません。オペレーティング システムは、ファイルの内容をメモリにキャッシュしません。
ハードドライブの速度が十分ではないからです。