Re: finalization (Re: struct timeval)
河野真治 @ 琉球大学情報工学です。
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
河野真治 @ 琉球大学工学部情報工学科
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735