728x90
반응형
import java.util.EmptyStackException;
public class Stack {
private Object[] elements;
private int size = 0;
public Object pop() {
if (size == 0) {
throw new EmptyStackException();
}
return elements[--size];
}
}
위는 Stack
클래스의 일부분이다.
스택이 커졌다가 줄어들었을 때 스택에서 꺼내진 객체들을 가비지 컬렉터가 회수하지 않는다.
프로그램에서 그 객체들을 더 이상 사용하지 않더라도 말이다.
// 제대로 구한한 pop메서드
public Object pop() {
if (size == 0) {
throw new EmptyStackException();
}
Ojbect result = elements[--size];
elements[size] = null;
return result;
}
- 객체 참조를 null 처리하는 일은 예외적인 경우여야 한다. ( 프로그램을 필요 이상으로 지저분하게 만들기 때문 )
- 자기 메모리를 직접 관리하는 클래스라면 프로그래머는 항시 메모리 누수에 주의해야 한다.
- 캐시 역시 메모리 누수를 일으키는 주범이다.
참고 자료
Joshua Bloch, 『Effective Java 3/E』, 개앞맵시 옮김, 프로그래밍인사이트(2018)
http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788966262281&orderClick=LEa&Kc=
728x90
반응형
'Java' 카테고리의 다른 글
[Effective Java] 아이템 10. equals는 일반 규약을 지켜 재정의하라. (0) | 2022.05.24 |
---|---|
[Effective Java] 아이템 9. try-finally보다는 try-with-resources를 사용하라. (0) | 2022.05.24 |
[Effective Java] 아이템 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라. (0) | 2022.05.24 |
[Effective Java] 아이템 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라. (0) | 2022.05.24 |
[Effective Java] 아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라. (0) | 2022.05.24 |