Re: realtime GC (Re: GC Re: LISPを...)
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するまでに、あといくつマークしなければなら
ないか」が分かります(実際には完全に一定ということはないので、保守的な
見積りをすることになります)。
前田敦司
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