-1

ファイルが Java (またはその他の言語) で読み取られる場合、データはディスクからアプリケーション レベルのバッファの外にあるメモリにコピーされますか? たとえば、次の操作を行ったときに作成されるデータのコピーの数:

FileInputStream fileReader = new FileInputStream(new File("/path/to/file"));
byte[] buffer = new byte[4096];
fileReader.read(buffer);

ディスクからバッファに書き込まれたデータのコピー以外に、データはオペレーティング システムまたはファイル システムによってキャッシュされますか?

4

1 に答える 1

2

簡潔な答え

多分

長い答え

ディスクまたはディスクのようなデバイスから読み取るときに、特定のデータのコピーがいくつ作成されるかは、オペレーティング システムと選択したファイルシステムによって異なります。最近のすべてのデスクトップ ファイル システムには、アプリケーション レベルと物理デバイス レベルの間でデータをキャッシュする読み取り/書き込みバッファーがあります。モバイル デバイスと組み込みデバイスは、物理的な回転ディスクではなくメモリ ベースのデバイスに書き込みを行うため、通常、このレイヤーはありません。

SSD デバイスが大きくなり、安価になるにつれて、デスクトップ デバイスでのこのレベルのキャッシュははるかに小さくなるか、SSD デバイスには回転するディスクと同じ速度の問題がないため、完全になくなると思います。それでもメイン メモリよりは低速ですが、回転するメディアのアクセス速度が遅いために行われる積極的なキャッシュは必要ありません。

于 2013-01-02T22:24:05.410 に答える