'변수와 레퍼런스'에 해당되는 글 1건

  1. 2008.05.01 자바관련 잡다한 이야기 - 원시 변수와 레퍼런스
원시 변수와 레퍼런스

가비지 컬렉션 기능이 있는 힙에서의 삶

Book b = new Book();
Book c = new Book();
사용자 삽입 이미지
Book 객체 두 개는 Heap에서 살게 되었다.

레퍼런스: 2개
객체: 2개
-----------------------------------------------------------------------------------------
Book d = c; 이러면
사용자 삽입 이미지




















c와 d는 똑같은 객체를 참조한다.

레퍼런스: 3개
객체: 2개
-----------------------------------------------------------------------------------------
c = b; 이러면
사용자 삽입 이미지

b와 c는 모두 같은 객체를 참조한다.

레퍼런스: 3개
객체: 2개
-----------------------------------------------------------------------------------------

힙에서의 삶과 죽음

Book b = new Book();
Book c = new Book();
사용자 삽입 이미지

Book 객체 두개가 힙에서 살게 되었다.

활성 레퍼런스: 2개
접근할 수 있는 객체: 2개

-----------------------------------------------------------------------------------------

b= c; 이러면
사용자 삽입 이미지

b와 c는 모두 같은 객체를 참조한다. 1번 객체는 버림받았기 때문에 GC의 대상이 된다.

활성 레퍼런스: 2개
접근할 수 있는 객체: 1개
버림받은 객체: 1개

1번 객체는 아무 레퍼런스도 남아있지 않아서 접근도 할 수 없다.
-----------------------------------------------------------------------------------------

c= null; 이러면
사용자 삽입 이미지

2번 객체에는 여전히 활성 레퍼런스(b)가 있으며 활성 레퍼런스가 있는 한 GC대상이 되진 않는다.

활성 레퍼런스: 1개
null 레퍼런스: 1개
접근 할 수 있는 객체: 1개
버림받은 객체: 1개


Posted by 서오석
,