kuno@gssm.otsuka.tsukuba.ac.jp writes:

> katoh@pop12.odn.ne.jpさん:
> > んで,問題はこれでヒープを使い切ってしまった時.一体どうすればいい
> > んでしょう?
> 
>   当然、ヒープを使い切った時はアウトでしょ。

「使い切る」というのが、
(1)生きているデータの量がヒープサイズ以上になる(GCサイクルが終っても空
   きがない)
という意味なら、それはバグだか設定ミスだかスペック以上のデータ量を扱お
うとしたか、いずれにせよGCでどうこうするのは無理です。

(2)GCサイクルが終ってゴミを回収する前にヒープの空き領域がなくなる
という意味なら、これは避けなければなりません。リアルタイムGCと名乗るた
めには、これが起きないことを保証しなければなりません。(でないと、cons
の処理時間が定数でおさまらなくなるから。)

> > #KCL でしたか,cons 毎に何セル処理するかみたいなパラメータが有りま
> > #したが,流石に原始的過ぎるのではないかしらむ.
> 
>   そうですか? 結局mutator/collectorの速度比は調整するしかないじゃ
> ないですか。でもですね。定常状態のデータ構造を固定した場合、「フ
> ルスピードでconsし続けても決してアウトにならない」値が求められる
> と思いませんか。

インクリメンタルGCの場合は、上のような調整をします。

生きているデータ量がどんどん際限なく増えていったりしないで、ほぼ定常状
態だとすれば、「あと何回consするまでに、あといくつマークしなければなら
ないか」が分かります(実際には完全に一定ということはないので、保守的な
見積りをすることになります)。

                                前田敦司