質問: icon-theme.cacheとは何ですか? lubuntu 12.10で次のコマンドを実行すると[11:09 pm] ~ $ find /usr/share/icons/ -iname icon-theme.cache -type f 私は次を取得します(最終変更日とサイズを追加した後):/usr/share/icons/lubuntu/icon-theme.cache 20121125 61.2 kib /usr/share/icons/humanity-dark/icon-theme.cache 20120810 40.6 kib /usr/share/icons/humanity/icon-theme.cache 20120810 931.9 kib /usr/share/icons/gnome/icon-theme.cache 20121017 65.8 mib /usr/share/icons/ubuntu-mono-light/icon-theme.cache 20130408 140.0 kib /usr/share/icons/loginicons/icon-theme.cache 20130408 628 bytes /usr/share/icons/ubuntu-mono-dark/icon-theme.cache 20130408 139.9 kib /usr/share/icons/hicolor/icon-theme.cache 20130406 12.4 mib /usr/share/icons/elementary-mono-dark/icon-theme.cache 20120926 12.4 kib そして、以下の例に示すように、これらのファイルはすべてtruetype font dataタイプです。[11:09 pm] ~ $ file /usr/share/icons/hicolor/icon-theme.cache /usr/share/icons/hicolor/icon-theme.cache: truetype font data 私の質問は、すべて密接に関連しています: icon-theme.cacheとは何ですか?その機能は何ですか?これらのファイル名のcacheの意味は何ですか? キャッシュタグ の定義は次のとおりです。「キャッシュは一時的なデータを近くに保存するため、実際のバッキングストア(ディスク、ネットワーク)、または何らかの結果を再計算する」。 なぜファイルサイズがそんなに多様なのですか? gnomeとhicolorは、フォールバックアイコンを提供するため最大のものですか(どこかで読んだように)。 日付はどうですか? ubuntu-monoについては、20130408にlight-themesをインストールしたときに出てくるので、確信しているだけです。これらのファイルは、テーマの切り替え中に変更されたり、日付が単なる日付を反映したりしますインストールの?
回答: これらのファイルが必要な理由を理解するには、最初にファイルをメモリにマッピングする概念を理解する必要があります。メモリマップファイル:メモリマップファイルは、仮想メモリのセグメントであり、ディスク上の物理ファイルにバイト単位で直接マッピングされます。大きなファイルへのランダムアクセス中のパフォーマンスや、異なるスレッドやプロセス間でマップされたメモリを共有する機能など、従来のストリームベースのi/oに比べて多くの利点があります。メモリマップファイルへのアクセスは、2つの理由で直接読み取りおよび書き込み操作を使用するよりも高速です。まず、システムコールは、プログラムのローカルメモリを単純に変更するよりも桁違いに遅くなります。第二に、ほとんどのオペレーティングシステムでは、実際にマップされるメモリ領域はカーネルのページキャッシュ(ファイルキャッシュ)です。つまり、ユーザー空間にコピーを作成する必要はありません。さて、質問を一つ一つ取り上げてみましょう: icon-theme.cacheとは何ですか?その機能は何ですか?これらのファイル名のキャッシュの意味は何ですか? ファイルicon-theme.cacheには、特定のディレクトリ(たまたま_index.themeを含むディレクトリ)特定のテーマ)。 gtk +はキャッシュファイルを使用して、アプリケーションの起動時に多くのシステムコールとディスクシークのオーバーヘッドを回避できます。キャッシュファイルの形式により、複数のアプリケーション間で共有されるメモリマップが可能になるため、全体的なメモリ消費も削減されます。 ファイルサイズがそれほど多様なのはなぜですか? ファイルサイズは、アイコンテーマのアイコンの数によって異なります。 日付はどうですか? メモリキャッシュを使用する場合、特定のメモリロケーションにアクセスするプロセスがある場合にのみキャッシュに何かが存在し、キャッシュがいっぱいでその要素を削除する必要がない限りそこに残ります。 したがって、変更日は、何らかのプロセスによって更新された日付に依存する可能性が最も高いでしょう。この場合、テーマのアイコンが使用されたときである可能性があります。 実際、gtk-update-icon-cacheという名前のアイコンキャッシュを更新するコマンドがあります。 出典と詳細情報: wikipedia-メモリマップファイル stackoverflow-メモリマップファイルの利点 msdn-メモリマップファイルの癖 gtk-update-theme-cache manページ 現在(13.04)のマニュアルページのman gtk-update-icon-cache