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 くらいメモリを割り当てるんだけど、これは本当に必要なんだろうか。というあたりを追ってみよう。