2
ObjectSpace._id2ref
이 반환하는 다음 두 가지 오류의 차이점은 무엇입니까?`ObjectSpace._id2ref`의 오류
0x... is recycled object (RangeError)
0x... is not id value (RangeError)
ObjectSpace._id2ref
이 반환하는 다음 두 가지 오류의 차이점은 무엇입니까?`ObjectSpace._id2ref`의 오류
0x... is recycled object (RangeError)
0x... is not id value (RangeError)
not id value
은 해당 ID를 가진 개체가 없었 음을 의미합니다.
recycled object
은이 ID를 가진 객체가 한 번 존재했음을 의미하지만 가비지 수집되었습니다. 루비 1.9.3/우분투
데모 : Object#to_s
의 수가 하지object_id
것을
x = Object.new
id = x.object_id
puts "0x%x" % id
# => 0x4aef5e8
puts ObjectSpace._id2ref id
# => #<Object:0x95debd0>
x = nil
puts ObjectSpace._id2ref id
# => #<Object:0x95debd0>
GC.start
puts ObjectSpace._id2ref id
# => 0x4aef5e8 is recycled object (RangeError)
주 - "오브젝트 ID의 부호화"인 docs 방법.
귀하의 설명을 이해하지만 귀하의 예를 이해하지 못합니다. RangeError 메시지가 이전의 object_id와 다른 object_id를 표시하는 이유는 무엇입니까? – sawa
아, 그래, 나는 그것을 간과했다, 미안. 그에 따라 업데이트되었습니다. –