[#7102] Ruby 1.3.4-990611 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.4-990611 is out, check out:

20 messages 1999/06/11

[#7223] Ruby 1.3.4-990625 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.4-990625 is out, check out:

14 messages 1999/06/25
[#7224] -Wl,-rpath on Linux (Re: Ruby 1.3.4-990625) — Ryo HAYASAKA <hayasaka@...21.u-aizu.ac.jp> 1999/06/25

早坂@会津大学です。

[ruby-dev:7201] Re: WeakRef?

From: Kazuhiro HIWADA <hiwada@...>
Date: 1999-06-23 15:43:57 UTC
List: ruby-dev #7201
ひわだです。

From: Kazuhiro HIWADA <hiwada@kuee.kyoto-u.ac.jp>
Subject: [ruby-dev:7174] WeakRef?

> ひわだです。

> v の値に何らかのリファレンスがあるのだろうかとか推測してますが、「v =
> nil」ってのは、必要なものでしょうか?。それとも実はこんなスクリプトは
> 書いてはいけなくて、偶然動いてしまったのでしょうか ^^;;;。

よくわからん質問してしまって申し訳ない ^^;。解決しました ^^;。

require 'weakref.rb'
def foo(a)
  w = WeakRef.new(a)
  a = nil
  x = proc {}
  [w, x]
end
wr, pr = foo("hoge")
p wr; ObjectSpace.garbage_collect; p wr

こういうスクリプトで "hoge" を GC に回収させるのに a = nil が必要なの
はなぜか?という疑問だったんですが、実装のことを考えれば必要ですね。
proc の生成で scope を dup するわけだし…。dup される前にリファレンス
を消しておく必要がありました…。

お騒がせしました ^^;;。では。
--
檜田和浩 <hiwada@kuee.kyoto-u.ac.jp>

In This Thread

Prev Next