글
Java/Effectice Java 2009/12/11 00:02h6. 쓸모 없는 객체 참조를 제거하자.
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/
'Java > Effectice Java' 카테고리의 다른 글
| h8. equals메소드를 오버라이딩 할 때는 보편적 계약을 따르자. (0) | 2009/12/17 |
|---|---|
| h7. finalizer의 사용을 피하자. (0) | 2009/12/13 |
| h6. 쓸모 없는 객체 참조를 제거하자. (0) | 2009/12/11 |
| h5. 불필요한 객체의 생성을 피하자 (0) | 2009/12/10 |
| h4. private 생성자를 사용해서 인스턴스 생성을 못하게 하자. (0) | 2009/12/10 |
| h3. private 생성자나 enum 타입을 사용해서 싱글턴의 특성을 유지하자. (0) | 2009/12/09 |
RECENT COMMENT