[#3536] Re: [ruby-list:10256] Re: for が修飾子だったら — Junichi Kurokawa <jun@...>

Reply-To: ruby-devとしました。

15 messages 1998/10/22

[ruby-dev:3526] Re: GC target (Re: [ruby-list:10035] Re: Ruby/Gtk text widget)

From: "D.Kanda" <MAP2303@...>
Date: 1998-10-13 07:42:20 UTC
List: ruby-dev #3526
  かんだです

matz@netlab.co.jp (Yukihiro Matsumoto)さんの書かれた、
	「[ruby-dev:3525] Re: GC target (Re: [ruby-list:10035] Re: Ruby/Gtk text widget)」
からの引用です。

> まつもと ゆきひろです
> 
> In message "[ruby-dev:3524] GC target (Re: [ruby-list:10035] Re: Ruby/Gtk text widget)"
>     on 98/10/13, "D.Kanda" <MAP2303@mapletown.net> writes:
> 
> |  かんだです。
> 
> |  これ、GC で落ちているんですけれど、何を GC しようとしたかっていう情報は
> |得られませんかね? クラス名だけでもいいですので。もしくはGC を OFF にして、
> |参照が無くなったらすぐに free するように動作させられてもいいです。
> 
> うにゃ? GCで落ちるというのはだいたい
> 
>   (1) 参照されてないから勝手に回収されちゃう
>   (2) 回収された領域をアクセスしにいっちゃう
> 
> という独立した2段階からなっていて,クラス名が分かるのは前者,
> 実際に落ちるのは後者ですから,落ちるタイミングでクラス名を知
> るのはかなり難しいですね.

> なんか良い手は無いかなあ.

  オブジェクトがどう保存されているのか知らないんですけれど、たぶん intern
をキーにして表形式のように考えられるんじゃないかと思います。

    +----------+------------+
    |   key    |   object   |
    +----------+------------+
    |          |            |

  これと同じような、値がクラスになっている表を作って、これは GC しないこと
にすれば、object が GC されちゃったとしても、その intern に新しいオブジェク
トが割り当てられるまではクラステーブルのほうには以前のクラスが格納されてい
ることになりますよね? こんな感じでできないでしょうか? もちろんデバッグオプ
ションでコンパイルしたときに有効ってことで。


> |  GC のタイミングはプログラムの流れと独立だから、デバッガで辿っても患部の
> |発見が難しいので。
> 
> 制御の流れとは独立ですが,場所は固定なのでちょっと慣れると
> 「ここで落ちると言うことは,ここが保護されてないんだな」と分
> かるようになります.

  GC は特定の場所で行なわれるようになっているんですか?
  どんな条件になってるんでしょう?
# 慣れてない :-P


In This Thread