kono@ie.u-ryukyu.ac.jp (Shinji KONO) writes:

> > こういう例はありますが、残念ながら Unix や Windowsで動くLispやJavaの
> > (一般に手に入る)処理系で、リアルタイムGCが実装されているものは知りませ
> > ん。
> 
> なんでなんでしょうね。やっぱり難しい? あるいは需要がない?

だから、

: じゃあ、なぜリアルタイムGCを持っている処理系がないんだと言うことになり
: ますが… それはUnixやWindowsでGCだけリアルタイムにしても無意味だから。
: リアルタイムGCの数%のオーバーヘッドの分だけ損してしまう。

ってことです。作る甲斐がないです。UnixやWindowsでできる程度のソフトリ
アルタイム処理(ミスする確率が低ければ良い)なら、別にリアルタイムGCにす
る必要はないし。

> GCのない言語はいまだにはびこっているわけで、(おそらく第十法
> 則には、GCは含まれてないでしょ?) GCがなくても、ゴミを定数オ
> ーダで回収できる場合が大半だし、そうでなくても、alloc/free 
> 比率を保証する手間を取るぐらいだったら、GCがあってもなくても
> 同じ、だったら、なしの方が良い、(自分の感知しないところで巨
> 大なデータ処理が行われたりしないとか、キャッシュレベルのデー
> タ局所性を破壊されないとか)ってところなのかなぁ。

すいません。上の文章の意味が良く分かりません。

「alloc/free 比率を保証する手間を取る」とは?
GCがあってもなくても、「生きているデータの最大量」の1.x倍のメモリ量が
いるのは同じですが、malloc/freeだとその比率を保証するのが大変という意味?
それは確かにその通りですが、GCを使わない理由にはなりませんよね(逆です
よね)。

「GCがあってもなくても同じ、だったら、なしの方が良い」とは?
効率が同じで、楽(freeしなくてよい)だったり間違いが少なくなるなら、GCあ
りの方が良いですよね。

「自分の感知しないところで巨大なデータ処理が行われたり」
best fitとかoptimal fitのmallocもけっこうな事をやってますが…
freeも、ブロックの結合が連鎖する場合とかね。

「キャッシュレベルのデータ局所性を破壊されないとか」
malloc/freeより世代別GCの方がマシかも。

> 文化的なところも大きいんでしょうけどね。

JavaやC#やVBから入る人が増えれば、その変の抵抗は減ってくるのでは。

むしろ、いま計算機を教えてる人に、Cの文化が染み着いちゃっててGCに関し
て迷信を信じている/GCに抵抗のある人が多いかも知れませんね。

                                前田敦司