なかだです。

At Mon, 31 Dec 2001 15:50:07 +0900,
Nobuyoshi-Nakada wrote:
> > |> [ruby-talk:28803][ruby-talk:29211]+[ruby-talk:29341]でも直り
> > |> ますが、とりあえずこんな感じでも一応直ります。
> > |
> > |もうちょっとマシ…かどうかはともかく、新しい手を考えてみました。
> > |たぶんGCもそれほど遅くはならないと思います。
> > 
> > 当面[ruby-dev:15603]でいこうと思います。
> > 正月休みに[ruby-dev:15610,15611]について検討してみますけど。
> 
> あー、やっぱダメダメ。ruby_sourcefileからしか参照されてない名前
> を忘れてるのはともかく、こんなのはやっぱりVALUEでないと。

やっぱり一応ちゃんと動いてるようです。二ヵ月少々使っていて不具合は見当
たりませんでした。[ruby-bugs:PR#257]のような報告もありますし、そろそろ
結論を出した方がいいのでは。

また、Bob Alexander(PR#257の投稿者)とやりとりしたときに計測した結果、
[ruby-dev:16215]の効果がかなり大きいことが分かりました。1.6.7は
[ruby-dev:15610,15611]だけ、1.7.2は[ruby-dev:15894,15902]も当ててあり
ます([ruby-dev:16215]でも同様)が、8倍くらい違います。増加量だけ見ると
20倍以上です。

$ cat /tmp/bug.rb
require "tempfile"

PSFORMAT = "-opid,%cpu,%mem,vsz,rss,command"
PS = ["ps", "--no-header", PSFORMAT, $$.to_s]
system("ps", PSFORMAT, $$.to_s)
1000.times do |i|
  f = Tempfile.new("test")
  f.close(true)
  if i % 100 == 99
    system(*PS)
    GC.start
  end
end

$ ruby16 -v /tmp/bug.rb
ruby 1.6.7 (2002-03-01) [i686-linux]
compiled: 2002-03-01T07:57:40
  PID %CPU %MEM   VSZ  RSS COMMAND
27960  0.0  0.3  3000 1532 ruby16 -v /tmp/bug.rb
27960 95.6  5.7 23696 22288 ruby16 -v /tmp/bug.rb
27960 99.9  9.6 38528 37120 ruby16 -v /tmp/bug.rb
27960 99.9  9.6 38528 37120 ruby16 -v /tmp/bug.rb
27960 99.4  9.6 38436 37028 ruby16 -v /tmp/bug.rb
27960 98.7  9.6 38464 37056 ruby16 -v /tmp/bug.rb
27960 97.9  9.6 38492 37084 ruby16 -v /tmp/bug.rb
27960 99.6  9.6 38492 37084 ruby16 -v /tmp/bug.rb
27960 98.9  9.6 38452 37044 ruby16 -v /tmp/bug.rb
27960 98.4  9.6 38480 37072 ruby16 -v /tmp/bug.rb
27960 97.9  9.6 38480 37072 ruby16 -v /tmp/bug.rb

$ ruby17 -v /tmp/bug.rb
ruby 1.7.2 (2002-03-01) [i686-linux]
compiled: 2002-03-01T15:41:55
  PID %CPU %MEM   VSZ  RSS COMMAND
27976  6.0  0.4  3084 1612 ruby17 -v /tmp/bug.rb
27976 84.4  0.8  4760 3348 ruby17 -v /tmp/bug.rb
27976 90.6  0.8  4808 3396 ruby17 -v /tmp/bug.rb
27976 92.4  0.8  4828 3416 ruby17 -v /tmp/bug.rb
27976 93.7  0.8  4828 3416 ruby17 -v /tmp/bug.rb
27976 94.4  0.8  4828 3416 ruby17 -v /tmp/bug.rb
27976 95.2  0.8  4828 3416 ruby17 -v /tmp/bug.rb
27976 95.5  0.8  4828 3416 ruby17 -v /tmp/bug.rb
27976 95.9  0.8  4828 3416 ruby17 -v /tmp/bug.rb
27976 96.4  0.8  4828 3416 ruby17 -v /tmp/bug.rb
27976 96.6  0.8  4828 3416 ruby17 -v /tmp/bug.rb

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦