32 名前:仕様書無しさん 投稿日:2001/05/13(日) 02:44
ガベコレが描画速度のベンチマークに影響したりはしないと思うけども。
33 名前:来たれOpenJIT 投稿日:2001/05/13(日) 03:50
それがするんだな。データの参照方式(直接/間接)やポイン タ(笑)と整数を区別するための フラグを持つか持たないか、 とか。むつかしい言葉でいえばExactGCかConvervativeGCか。 ま、こんなことはVMやJITを作ってないとわかんないけど。
34 名前:来たれOpenJIT 投稿日:2001/05/13(日) 04:08
JBlendがどうやってるか知らないけど、sunのVM(HotSpotを除 く)はConservativeGC。 整数とポインタを区別する情報をもた ない。ポインタっぽい整数はポインタとみなすので、 たまた まそれに一致する未使用オブジェクトがあると、回収できない。 kvmはexactGC で、それを区別するフラグを整数やポインタ一 つ一つにもっている。正確に未使用オブ ジェクトが回収でき る反面、整数を読み書きするのにもフラグもいっしょにしょり しなきゃ いけないから、ひらたくいえば遅くなる(もちろん なるべく速度低下を押さえる方法も ある)。また、データを 直接参照するか間接参照にするかも、直接だと当然速度が速い。 間接だと当然遅い。そのかわりメモリがちらかって細かなブロッ クに断片化しても、 オブジェクトの位置をメモリ上で移動で きる。直接参照していると、そのオブジェクトを 参照してい るすべての情報を書き換えないといけないから、事実上移動で きない。 (これも両者の利点を併せた変形がいろいろある)。 パソコンの場合、メモリが有り余って るから、速度優先の方 式を使うのが普通。kvmは多少速度を犠牲にしてもメモリが 確実 に回収できて、断片化してもデフラグできる方式をとっ てる。携帯でもメモリを気にせず にパソコンと同じ方式をと れば、その分速くなる。ま、推測でしかないけど。