프로그램을 start` - I혼란
p RUBY_VERSION
a = "A"
b = "B"
p "#{a}"
p "#{b}"
p "Garbage Count => #{GC.count}"
b = "D"
p "Garbage Count => #{GC.count}"
GC.start
p "Garbage Count => #{GC.count}"
p "#{a}"
p "#{b}"
출력 : Program I
에서
"1.9.3"
"A"
"B"
"Garbage Count => 1"
"Garbage Count => 1"
"Garbage Count => 2"
"A"
"D"
p "Garbage Count => #{GC.count}"
의 출력이 나를 1,1,2
을있는 혼동했다. 혼란은 garbage objects
으로 계산되었습니다. 그래서 나는 아래와 같이 Program-I
의 수정 된 버전을 시도했다.
여기서 나는 GC.start
을 주석 처리했다. 이제 Program -II
의 출력을 보면 인데, 내 첫 번째 프로그램에서 GC.start
을 쳐다 보았습니다.이 첫 번째 프로그램에서 참조가없는 객체를 차례로 삭제했습니다. "B"
.
프로그램 - II
p RUBY_VERSION
a = "A"
b = "B"
p "#{a}"
p "#{b}"
p "Garbage Count => #{GC.count}"
b = "D"
p "Garbage Count => #{GC.count}"
#GC.start
p "Garbage Count => #{GC.count}"
p "#{a}"
p "#{b}"
출력 :
"1.9.3"
"A"
"B"
"Garbage Count => 1"
"Garbage Count => 1"
"Garbage Count => 1"
"A"
"D"
마지막 질문은 다음과 같습니다
(a) GC.start
전에 출력에서 명확한 1 개의 객체가 삭제되었습니다. 어떤 물건 이었습니까?
(b) GC.start
이없는 상태에서 참조 대상이 아닌 객체 B
이 파괴되지 않은 이유는 무엇입니까?
abive 코드 내가 장애인 garbage collection
왜 라니는 지난 GC.count
가 1
로 출력을 보여주는 수행이의
p GC.count
p GC.disable
p GC.count
출력
1
false
1
EDIT?
누구나 위에서 언급 한 것처럼 내 마음에 떠오르는 질문을 이해할 수 있습니다.
내 ** 수정 ** –