콘솔에 따라 다릅니다.
IRB
마지막 결과가 명시 적으로 지정되지 않은 경우에도, _
로 저장됩니다. GC.start
을 실행하면 마지막 오브젝트가 제거되지 않습니다
irb(main):001:0> class Foo; end
=> nil
irb(main):002:0>
irb(main):003:0* Foo.new
=> #<Foo:0x007fca7a309f98>
irb(main):004:0> p ObjectSpace.each_object(Foo).count; GC.start; p ObjectSpace.each_object(Foo).count
1
1
=> 1
irb(main):005:0> p ObjectSpace.each_object(Foo).count; GC.start; p ObjectSpace.each_object(Foo).count
1
0
=> 0
들어 올립니다을
는
당신은 마지막 결과 및 _
및 __
과 결과를 마지막으로 두 번째에 액세스 할 수 있습니다
[1] pry(main)> 'a'
=> "a"
[2] pry(main)> 'b'
=> "b"
[3] pry(main)> p _, __
"b"
"a"
=> ["b", "a"]
들어 올립니다 모두 저장 최종 결과는 _out_
입니다. Pry :: HistoryArray :
[1] pry(main)> class Foo; end
=> nil
[2] pry(main)> Foo.new
=> #<Foo:0x007fd093102118>
[3] pry(main)> ObjectSpace.each_object(Foo).count
=> 1
[4] pry(main)> GC.start
=> nil
[5] pry(main)> ObjectSpace.each_object(Foo).count
=> 1
[6] pry(main)> _out_[2]
=> #<Foo:0x007fd093102118>
를 실행하면 스크립트
내부
[1] pry(main)> class Foo; end
=> nil
[2] pry(main)> Foo.new
=> #<Foo:0x007fa90b1ad360>
[3] pry(main)> ObjectSpace.each_object(Foo).count
=> 1
[4] pry(main)> GC.start
=> nil
[5] pry(main)> ObjectSpace.each_object(Foo).count
=> 1
[6] pry(main)> 5.times{_out_.pop!}
=> 5
[7] pry(main)> GC.start
=> nil
[8] pry(main)> ObjectSpace.each_object(Foo).count
=> 0
:
당신은 그것의 마지막 요소를 제거하기 위해 _out_.pop!
을 사용할 수 있습니다
class Foo; end
Foo.new
p ObjectSpace.each_object(Foo).count
GC.start
p ObjectSpace.each_object(Foo).count
를 스크립트 내에서, 당신은 얻을 :
1
0
왜 개수가 0이어야합니까? –
@ Foo.new가 어떤 변수에도 할당되지 않았기 때문에 @ Зелёный : 콘솔에 따라 도달 할 수 없으며 가비지 수집 준비가 될 수 있습니다. –