일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 비기능적 요구사항
- 기능적 요구사항
- 자바 필터
- 스프링 시큐리티 설정
- 스프링
- 스프링시큐리티
- 생성자주입
- kotlin ::
- jpa lazy
- ioc컨테이너
- Spring
- 소프트웨어의 품격
- open-session-in-view
- 스프링 포매터
- spring formatter
- 도커 이미지 빌드
- 토비의 스프링
- 스프링di
- 동적파라미터
- IOC
- fetch join
- 스프링부트 도커
- jpa no session
- 정적팩토리메서드
- java predicate
- kotlin 리팩터링
- 그래프큐엘
- method refetence
- 수정자주입
- Atomicity
Archives
- Today
- Total
공부기록
아이템7. 다 쓴 객체 참조를 해제하라 본문
반응형
다 쓴 객체 참조를 해제하라
- 자바는 가비지컬렉터 덕분에 메모리를 직접 관리하지 않아도 된다.
- 그렇다고 메모리 관리에 신경쓰지 않아도 된다는 뜻은 아니다.
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처리하는 일은 예외적인 경우여야한다.
정리
- 다 쓴 참조를 해제하는 가장 좋은 방법은 유효범위 밖으로 밀어내는 것
반응형
'JAVA' 카테고리의 다른 글
아이템 10. equals는 일반 규약을 지켜 재정의하라 (0) | 2019.11.29 |
---|---|
아이템9. try-finally보다는 try-with-resources를 사용하라. (0) | 2019.11.29 |
아이템6. 불필요한 객체 생성을 피하라. (0) | 2019.11.27 |
아이템5. 자원을 직접 명시하지 말고 의존객체주입을 사용하라. (0) | 2019.11.27 |
아이템4. 인스턴스화를 막으려거든 private 생성자를 사용하라. (0) | 2019.11.26 |