Constantに割り当てられたオブジェクトはガベージコレクションできないことがわかります。 ( "Rubyの定数はガベージコレクションされないので、定数がオブジェクトへの参照を持つ場合、そのオブジェクトはガベージコレクションされません" - https://www.sitepoint.com/ruby-uses-memory/)rubyでは、クラスメソッドの変数に割り当てられたオブジェクトをガベージコレクションすることができますか?
しかし、私は心の平和のために明快さを得ようとしています他のものが一般的にガベージコレクションされることはありません。
特に、クラスメソッドのプレーン変数に割り当てられたオブジェクトはガベージコレクションできますか?たとえば:
class Foo
def self.bar
array = []
1000.times { array << 'string' }
end
end
Foo.barが呼び出された後、それらの千の文字列はガベージコレクトすることができ、またはそれらは「配列」変数に対して保存されているので、彼らがたむろしなければなりませんか?
配列が@array
または@@array
の場合はどうなりますか?
変数 '配列 'が保持するオブジェクトはメソッドの範囲外で参照されないので、メソッドが完了するとガベージコレクションされます。 –