推測するする

元RYOKOせんせの「Photoshopのメモリ節約技術を推測する」シリーズを受けて.
id:ryoko_komachi:20051012:1129160173
id:ryoko_komachi:20051015:1129472787
うちで使ってる Photoshop CS でもちょこっと見てみました.メモリ管理アルゴリズムについては元記事の方で解説が行われそうなので,OS の仮想メモリとの付き合い方という観点に注目していくつか.以下の情報は全て Process Explorer から読み取れます.

  1. 起動時にアドレス空間を大量に予約*1.起動時にはその一部のみが Commit される.
  2. 必要に応じてコミット済みメモリが増加*2.ただしファイルを閉じても一度増えたコミット済みメモリは減少せず.メニューを色々漁ってみましたが,このコミット済みメモリの開放方法は分かりませんでした.ただしその後の作業でこのコミット済み領域を再利用しているようなので,いわゆる「メモリリーク」とは区別すべきでしょう.
  3. 最小化でワーキングセットが激減するところを見ると,特にワーキングセットの保護*3は行っていない模様.
  4. 100MB 程度の BMP ファイルで試した限りでは,ファイルの読み書きにメモリマップは使わない.

何のことやらわけ分からんという人には,まずはこの一冊.

インサイド Microsoft Windows 第4版〈上〉 (マイクロソフト公式解説書)

インサイド Microsoft Windows 第4版〈上〉 (マイクロソフト公式解説書)


上巻はもうもっているという人も下巻が出ますよと.
インサイドMicrosoft Windows第4版〈下〉 (マイクロソフト公式解説書)

インサイドMicrosoft Windows第4版〈下〉 (マイクロソフト公式解説書)

  • 作者: ディビットソロモン,マークルシノビッチ,David A. Solomon,Mark E. Russinovich,豊田孝
  • 出版社/メーカー: 日経BPソフトプレス
  • 発売日: 2005/10
  • メディア: 単行本
  • 購入: 2人 クリック: 12回
  • この商品を含むブログ (30件) を見る

*1:環境設定の「Photoshop の最大使用メモリ」に応じて変化する模様

*2:元RYOKOせんせのところにあるように,省メモリを意識したアルゴリズムになっているようですね

*3:例えば id:NyaRuRu:20050607:p1 で紹介した SC_MINIMIZE のトラップなど.他にも SetProcessWorkingSetSizeVirtualLock を使えばワークエリアを実メモリ上に残しやすくなりますが,そういうこともしていないようです.