티스토리 뷰
자바는 C/C++ 과는 다르게 더 이상 참조되지 않으면 객체들이 사용하던 메모리가 자동으로 회수된다.
public Object pop(){
if(size == 0)
throw new EmptyStackException();
Object result = elements[--size];
elements[size] = null; // 쓸모없는 reference 를 제거
return results;
}
- 불필요한 객체를 null로 만들면 메모리에서 바로 제거되며 나중에 실수로 그 참조를 사용하더라도 NullpointException이 바로 일어나도록 할 수 있다.
- 자체적으로 관리하는 메모리가 있는 클래스를 만들 때는 메모리 누수가 발생하지 않도록 주의해야 한다. (ex. element 가 free 되면 object reference 들은 모두 null 처리가 되어야 한다.)
- 캐시(cache)도 메모리 누수가 흔히 발생한다. WeakHasMap을 캐시로 사용하면 Key값의 외부 참조에 따라 결정되도록 할 수 있다.
- 메모리 누수가 흔해 발견되는 또 한 곳은 콜백과 리스너이다. 명시적으로 콜백을 deregister 시키지 말고 약한 참조(weak reference)를 사용하거나 키값들을 weakHashMap을 사용해 저장하라.
'프로그래밍 > Effective Java' 카테고리의 다른 글
[Effective Java] 08. equals를 재정의할 때는 일반 규약을 따르라. (0) | 2019.04.23 |
---|---|
[Effective Java] 07. 종료자 사용을 피하라. (0) | 2019.04.21 |
[Effective Java] 05. 불필요한 객체는 만들지 마라. (0) | 2019.03.26 |
[Effective Java] 04. 객체 생성을 막을 때는 private 생성자를 사용하라. (0) | 2019.03.10 |
[Effective Java] 03. private 생성자나 enum 자료형은 싱글턴 패턴을 따르도록 설계하라. (0) | 2019.03.09 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
TAG
- 자바스크립트
- 성능분석
- 제주도 여행
- 오라클 내장 함수
- 자바
- effective java
- 프로그래머스
- 리눅스 명령어
- Eclipse
- 오라클
- 정렬 알고리즘
- 개발환경
- 이직
- SQL
- 회고
- 프로그래머
- 소프트웨어공학
- spring
- Linux 명령어
- 리액트 16
- Tomcat
- javascript
- Java
- Collection
- sort algorithm
- Maven
- 제주도 3박4일 일정
- React
- 리액트
- 경력관리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함