SL-C700の障害
ところで、 Florian のSL-C700はいくつか不思議な挙動を示しています。
- 起動直後、メモリを使いつぶす
OSの起動後、コンソールを開いてメモリの量を監視していると、なぜかメモリがどんどん消費されて行きます。この消費のせいでそのうち搭載メモリをすべて使いつぶし、「アプリケーションを終了してください」ダイアログが出た後おもむろにメモリが解放されます。
起動時にしばらく時間がかかるだけではあるのですが、一体どういう原因か分からずちょっとこわいです。qpeserverのどれかがメモリを使っているかまでは突き止めたのですが、それが何かまでは分からずじまいです。
- シンク・バックアップができない
ふだんZaurusDriveを「ネットワーク」で使っているのですが、このままの設定ではシンク・バックアップができません。
いったん「シリアル」に設定し直せばいいのですが、バックアップのたびにPCあぷりをインストールし直すのもめんどうですし。
あ、いや、分かってるんですよ。ハードウェア的な障害ではなく、OSレベルの障害だということは。クリーンインストールをして、必要なものを徐々にそろえて行けば原因究明できることも分かってます。
時間かかるのが分かっているので後込みしているだけで(^^;)。
イメージのシュリンク
おおしまさん(id:squeaker)のコメント「要らないクラスを削除するとメモリを食わなくなる(意訳)」を読んで、まったくもってその通りだと思ったのでいろいろ調べてみることに。
調査方針としてとりあえず以下を掲げてみました。
- Squeakの.imageを現在の.imageと.changesから作る方法。
- 上記もしくは直接.imageを作る方法
- Squeak3.6に含まれている機能のリストアップ
- 上記に含まれていながら実際には使用されることは少ない(と思われる)機能の洗い出し
- 上記の機能の多機能との依存関係
ぐぐって検索……と、早速こんなところが引っかかってみたり。
- The Squeak Image(http://minnow.cc.gatech.edu/squeakdoc/39)
副題に「どうやって小さくするか」とかリンクに「PDA用MiniSqueak」とかありますね。ちょっと古いですけど。
ともあれ、Imageファイルの生成以外はZaurus上で出来るかな?(多分、出来はするけど凄く重そう) 暫く行き帰りに試してみましょう。
changesファイルについて
gatech.eduに、.changesファイルと、.imagesについて詳しく書かれてありました。
imageについて(http://minnow.cc.gatech.edu/squeak/2213)
changesについて(http://minnow.cc.gatech.edu/squeak/49)
つまり、
ようは、はじめに立てた「changesからimageを作る」ってのは、全然とんちんかんな言いぐさだったわけですね。なるほど。
ついでに、.sourcesと.changesから合成した.sourcesファイルを作る方法も乗っていたり。
ソースコードの凝縮(http://minnow.cc.gatech.edu/squeak/759)
Smalltalk condenseSources.
なんと、Workspaceでこれをやるだけで良かったのですね。おもしろいなぁ。
でも、changesが無くなったからと言って、使用メモリ量が急激に減るわけではないみたいですね(^^;)。コメントを削除(ソースファイルの圧縮)してもあんまり変わらないし。
今日の成果
いろいろやった結果、確かにSqueakが使用するメモリ領域はかなり削減されたようです。
9674628
3658108
2963644
20mだの、16mだの言うメモリの量が、実際に"m=2^20"かどうかはちょっとさておき、試しに計算してみるとこんな感じ。
新イメージ:
(16*1024*1024)-3658108=13119108
(20*1024*1024)-9674628=11296892
元イメージ:
(16*1024*1024)-2963644=13813572
あんまり変わらないかなぁ。確かに数百Kbyte小さくなってはいるんだけど。
ま、ここまでたどり着くのがえらい楽しかったのでよしとしましょう(^^)。