GC対象への弱参照をもつクラス。
成果物
情報源
ObjectSpace::WeakMap
GC の対象になるオブジェクトへの weak reference を持つクラスです。主に WeakRef クラスの内部で使用されるため、weakref ライブラリ経由で使用してください。
当たり前のように弱参照について書いてあるが、あらためてググってみた。
弱参照とは、参照先のオブジェクトをガベージコレクタから守ることのできない参照のことである。
新しいC/C++で聞いたことがある。ようするにGCで回収されやすくする。循環参照を避ける。といった狙いがある。
メンバ抜粋
[] []=
[]
, []=
weak_map = ObjectSpace::WeakMap.new key = "text" p key.object_id #=> 36 weak_map[key] = "test" # => test p weak_map[key] # => test p weak_map[key].object_id #=> 48
key
とweak_map[key]
はおなじオブジェクトを返すかと思ったが、IDが違う。どゆこと? 弱参照だからWeakRefとかいう別クラスが仲介しているのかな?
所感
知らなくていいんじゃないかな?
対象環境
- Raspbierry pi 4 Model B
- Raspberry Pi OS buster 10.0 2020-08-20 ※
- bash 5.0.3(1)-release
- Ruby 3.0.2
$ uname -a Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux