D言語 Part8
■ このスレッドは過去ログ倉庫に格納されています
0122117
2006/01/16(月) 11:34:49今のphobosの実装だと、gc_initの中(src/internal/gc/gc.d:105)で、
静的変数やらグローバル変数を置くために予約されたメモリ領域をまとめて
全部gc.addRange()してるんだが、その領域の使われてない部分が未初期化で(※)、
そこのゴミデータのビットパターンが"たまたま"newした領域のアドレスと
同じ値になってると、その領域は参照されてるとみなされて開放されない、
というパターンに見える。でかい配列になるほどゴミデータ中の値がたまたま
その配列の中へのポインタに誤認識される率が高いので>>110みたく200MBも
gcから取るとこうなりやすいんじゃなかろうか。
※ でもbssって普通ゼロクリアされてるような気もするんだが…わからん。
※ その辺dmdが何かバグってるのかもしれない。一応バグレポしといたほうがいいかも
>どうみたらそれが分かります?
debugオプション全部入りでphobosをビルド
>>121
開放される方が望ましいのは確かだが、
Conservative GCだとこの手の過剰認識は仕方がないかと…
■ このスレッドは過去ログ倉庫に格納されています