実行可能ファイルのキャッシュメモリはどのように機能しますか?

実行可能ファイルのキャッシュメモリはどのように機能しますか?

私は常にLinuxのキャッシュされたメモリ(free -mなど)を再び必要に応じて再利用できるか、新しいアプリケーションでより多くのメモリが必要な場合はすぐに解放できるメモリページとして理解しました。この記事数年前に役に立ちました。)

実行可能ファイル(Thunderbirdなどのプログラム)とデータ(ログファイルの内容など)の両方がキャッシュされる可能性があります。実際、*nixではテキストファイルと実行ファイルの間に違いはないと思います。

あまり変更されていないデータ(テキストファイルなど)についてはこれがどのように機能するのかがわかりますが、本質的に動的プログラムではどのように機能しますか?確かに、キャッシュメモリは動的に割り当てられたオブジェクトを復元できませんか?では、バイトコード(またはスクリプトの場合はガイドライン)だけがキャッシュされますか?

編集1

キャッシュされたメモリとは、「free」を実行するときに「キャッシュされた」列の下のメモリを意味します。

$ free -m
             total       used       free     shared    buffers     cached
Mem:          7985       6650       1334          0        150       3201
-/+ buffers/cache:       3298       4686
Swap:        13178          2      13176

編集2

私が逃したヒントを教えてくれたls-lrtに感謝します。 SEへのこの回答で明確に述べたように(最初に検索する必要があります)、「キャッシュメモリはディスクキャッシュVFSで使用されています "。これは、実行可能ファイルの場合、動的に割り当てられたコンテンツに関係なく、コマンド(バイトコード、スクリプト行など)のみがこの列に表示されることを意味します。私の印象は、メモリーページ全体(動的に生成されたオブジェクトを含む)が「キャッシュ」されていることです。

編集3

に関する良い例ディスクキャッシュの使用

ベストアンサー1

無料でマークされたキャッシュはファイルシステムキャッシュです。ファイルシステムレベルでは、すべてがデータのオクテットにすぎません。アプリケーションデータとファイルデータの違いはありません。そのレベルで。ファイルキャッシュから置き換えられた実行ファイルを再ロードすることはできますが(実行ファイルはいいえスワップファイルに書き込むと、メモリから追い出されます。通常、ファイルキャッシュが最初に犠牲になるため、このような場合はまれです。

これで、使用可能なメモリなどのファイルキャッシュと、実行中のプログラムに含まれる可能性がある他の種類のメモリとの違いを明確に理解してください。これは、「キャッシュメモリは動的に割り当てられたオブジェクトを復元できません」という意味がわからないためです。アプリケーションで使用されるすべてのメモリは、いいえファイルキャッシュに関連しています。ファイルキャッシュは、アプリケーションによるいかなる種類のメモリ割り当てもキャッシュしません。ファイルキャッシュはディスクとオペレーティングシステムの間の仲介者です。

深刻な質問に答えるには、「ではキャッシュされたのはバイトコード(またはスクリプトのコマンド)だけですか?」です。

ファイルキャッシュはディスクのオクテットのみをキャッシュします。アプリケーションがどのメモリを使用しているかは関係ありません。

おすすめ記事