Re:Boehm GC の Repeated allocation of very large block 問題

Boehm GC の Repeated allocation of very large block 問題の続き。


以下のことを試してみた。

  • GMP の allocater はデフォルトを使う(つまり GC_malloc ではなくて malloc
  • Bignum クラスの親クラスを gc_cleanup にして ~Bignum() で必ず mpz_clear する

こうすることで、GC が管理する領域には "false pointer" は入らなくなる。


実行してみるとメモリを食いまくって返ってこなくなる。失敗。原因の追及はまだ。
例のコードを走らせると GMP が realloc を呼びまくって *合計* 2GB くらいメモリを割り当てるんだけど、これは本当に必要なんだろうか。というあたりを追ってみよう。