JAVA
아이템7. 다 쓴 객체 참조를 해제하라
gracelove91
2019. 11. 29. 20:55
반응형
다 쓴 객체 참조를 해제하라
- 자바는 가비지컬렉터 덕분에 메모리를 직접 관리하지 않아도 된다.
- 그렇다고 메모리 관리에 신경쓰지 않아도 된다는 뜻은 아니다.
Stack
구현한 간단한 코드 중 일부 (메모리 누수가 일어난다.)
...
public Object pop() {
if(size == 0) {
throw new EmptyStackException();
}
return elements[--size];
}
...
- 이 코드에서는 스택이 커졌다가 줄어들었을 때 스택에서 꺼내진 객체들을 GC가 회수하지 않는다. 스택이 그 객체들의 다 쓴 참조를 여전히 가지고 있기 떄문. 다음은 그것을 개선한 코드다.
public Object pop() {
if(size == 0) {
throw new EmptyStackException();
}
Obejct result = elements[--size];
elements[size] = null;
return result;
}
- 하지만 객체참조를 null처리하는 일은 예외적인 경우여야한다.
정리
- 다 쓴 참조를 해제하는 가장 좋은 방법은 유효범위 밖으로 밀어내는 것
반응형