こんにちは、なかむら(う)です。

In message "[ruby-dev:33890] Re: [ ruby-Bugs-17454 ] irb crash while iterating over all objects"
    on Feb.22,2008 00:32:15, <shyouhei / ruby-lang.org> wrote:
| irb(main):001:0> ObjectSpace.each_object(Numeric) {|i| p [i.class, i] }
| [Float, 2.71828182845905]
| [Float, 3.14159265358979]
| [Bignum, 18446744073709551615]
| [Bignum, 18446744073709551615]
| [Bignum, 18446744073709551615]
| [Float, 2.22044604925031e-16]
| [Float, 1.79769313486232e+308]
| [Float, 2.2250738585072e-308]
| [Bignum, ]
| [Bignum, ]
| [Bignum, ]
| => 11
| 
| とか実験してみると、EとかPIとかが見えるのはまあいいとして、このBignumは
| なんなんでしょう? どこから来てるんでしょう? というのが今のところの謎で
| す。どなたかご存じないですか。

このBignumの正体はProcess::RLIM_INFINITYなどであるということ
で、別に怪しいものではないことは判明したのですが、同じコード
をtrunkで実行すると、さらに大量の巨大なBignumが多数出現します。

その正体は、bignum.c内のpower_cache_init()で生成しているもの
なのですが、これってBignum#to_s相当の処理をしない限り使われな
いものなので、ruby起動時に絶対生成するんじゃなくて、初めて相
当の処理が行われたときに生成するようにしたほうがいいんじゃな
いでしょうか?


それでは。
-- 
U.Nakamura <usa / garbagecollect.jp>
つまんない内容なのでパッチは略