티스토리 툴바


블로그 이미지
카라크라스

Leon.Kim의 공부하는 블로그입니다. mail - kalaklas@gmail.com twitter - @kalaklas

Rss feed Tistory
Java/Effectice Java 2009/12/11 00:02

h6. 쓸모 없는 객체 참조를 제거하자.

h6. 쓸모 없는 객체 참조를 제거하자.
참고 : Effective Java second edition

>>들어가며
자바는 가비지컬렉터에 의하여 JVM메모리가 자동으로 관리된다.
그렇다고 자바 프로그래머가 메모리 관리에 대하여 아예  고려하지 않아도 된다는 것은 아니다.
쓸데 없는 참조를 제거(의도하지 않은 객체의 유지)하여, 메모리 누수(memory leak)를 방지하자.

>>구현
1. 쓸모 없는 참조를 null 값으로 바꾸어주는 것이 좋지만, 꼭 필요할 때만 예외적으로 행하는것이 좋다.

best- 2. scope를 이용하는것이다.  참조 값을 갖는 변수가 유효범위 밖에 있도록 하여, 자연스럽게  제거되도록 하는것이다. 

메모리 누출 원인
1. 쓸모없는 참조
2. 캐시
3. Listener-callback

* 메모리 사용을 트래킹하도록 하려면 -Xrunhprof:heap=sites 옵션으로 JVM을 호출

* 약한참조 (weak references)
약한 참조는 레퍼런트(referent)라고 하는 객체 레퍼런스를 위한 홀더(holder)이다.
약한 참조를 사용하여 레퍼런트에 대한 참조를 관리할 수 있다.(가비지 컬렉팅이 가능하다.) 가비지 컬렉터가 힙을 트레이스 할 때, 객체에 대한 대표적인 레퍼런스가 약한 참조라면 레퍼런트는 GC의 대상이 된다. (약한 참조에 의해 유일하게 참조되는 객체를 weakly reachable이라고 한다.)
참고 : http://www.ibm.com/developerworks/kr/library/j-jtp11225/
TOTAL 19,751 TODAY 3