タグ

weakrefに関するnabinnoのブックマーク (2)

  • RubyのGCと仲良くしたい〜WeakRefオブジェクトを削除するぞ編〜 - Qiita

    Rubyでは、作成したオブジェクトがなにかのタイミングでGCによってメモリから解放されています。 一般的なオブジェクトは、どこからかに参照されている間は必要、参照されていないなら不要とGCに判断され、メモリから解放されます。 例外的に 弱い参照 -Wikipedia として定義されたオブジェクトは、まだ参照されていてもなにかのタイミングでGCにぽいぽいされてしまいます。 一見、使いようが無いようですが、生成コストがかかる値をキャッシュしておき、メモリに余裕がない場合(一般にGCが動くタイミング)にキャッシュを破棄する、というようなことができます。 機能の実現に必要となることはありませんが、速度改善などに役立つテクニック的な。 なおタイトルはてきとーです。「○○編」と書いていますが、別の編があったりはしません。たぶん。 Ruby2.1で動作検証をしましたが、1.9以降ならたぶん大丈夫なんじゃ

    RubyのGCと仲良くしたい〜WeakRefオブジェクトを削除するぞ編〜 - Qiita
  • class WeakRef (Ruby 3.3 リファレンスマニュアル)

    [edit] 要約 weak reference を実現するクラスです。 WeakRef オブジェクトは与えられたオブジェクトをポイントしますが、ポイント先のオブジェクトは GC される可能性があります。アクセスしようとしたときにオブジェクトが GC されていれば WeakRef::RefError が発生します。 delegate も参照してください。 サンプルコード require 'weakref' foo = Object.new ref = WeakRef.new(foo) ref.some_method_of_foo 目次 特異メソッド new インスタンスメソッド __getobj__ __setobj__ weakref_alive? 継承しているメソッド Delegatorから継承しているメソッド ! != == freeze marshal_dump marshal_l

  • 1