河野真治 @ 琉球大学情報工学です。

In article <m3acwhrfv9.fsf@nospam.maedapc.cc.tsukuba.ac.jp>, MAEDA Atusi <maeda-news@ialab.is.tsukuba.ac.jp> writes
> >    reference は、複製可、持ち運び可
> linear (unique) typeとか、Region推論とかのアプローチもありますけど、主
> 流の言語は全部↑のとおりでしょ。

局所変数へのポインタは持ち運びに制限がありますよね。なので、
消滅は関数脱出に同期するわけだけど。

> 昔のSmalltalkのGCほど強い制約はないですが、確かに使うコツはあります。
> 先に挙げた記事
> http://www-106.ibm.com/developerworks/library/j-jtp01274.html なんかは
> すごくよくまとまってると思います。

なるほど。

> 現在のGCは、
> ・割り付けコストは安い
> ・「長生きするオブジェクトの割合が少ない」なら回収も安い
> ・ヒープへのポインタ書き込みは高くつく
> という特徴があります。

ってことは、Java では、頻繁に生成消滅するconstructor に複雑
なことをやらしちゃいけないんだな。複雑な初期データを持つオブ
ジェクトをプールして使うってのはだめなのか。なんとなくわかって
きたかな。

これって、本当に今のアプリケーションの特徴に合っているんですかね。
例えば、Tab Browser とか、Word とかでもいいんだけど。

> ポインタを含むデータは、割り付け時に初期化したらあとはなるべく書き換え
> ないで(immutableにしておく)、値が変わるならどんどん作り直すのが吉です。

この手のプログラムには割りと慣れている方なんだけどなぁ。プロ
グラミングスタイルだとすれば、それを教える必要があるのか... 
(ってよりは、自分が勉強し直す必要があるってわけか) うーん。

---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科