본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다.
동일한 기능의 객체를 매번 생성하는 것보다 객체 하나를 재사용하는 편이 더 나은 경우
- 불변 객체 생성 시
- 불변클래스의 static 팩터리 메서드를 사용하라
- 생성비용이 아주 비싼 객체 생성 시
- 캐싱하여 재사용해라
객체 재사용 시 조심할 상황
- 불변 객체 재사용
- 위에선 객체가 불변이라면 재사용하라고 했는데..?
- 불변인 줄 알았는데 불변이 아닌 경우를 조심하라는 말
- 책의 예시 해설)
- 클라이언트는 Map.keySet()을 사용하여 Set을 조작함
- 이때, 클라이언트는 Set을 불변객체로 인지함
- 하지만 Set은 Map을 참조하고 있으므로 Set을 조작하면 Map에도 영향이 감
- 위에선 객체가 불변이라면 재사용하라고 했는데..?
- 의도되지 않은 오토박싱
- 불필요한 오토박싱은 엄청난 성능 하락을 야기할 수 있음
- 기본 타입 사용을 지향하고, 의도치 않은 오토박싱 사용을 조심하자
- 불필요한 객체 풀(pool) 생성
'책 > Effective Java' 카테고리의 다른 글
[이펙티브 자바] 아이템9: try-finally보다는 try-with-resources를 사용하라 (0) | 2022.04.20 |
---|---|
[이펙티브 자바] 아이템7: 다 쓴 객체 참조를 해제하라 (0) | 2022.04.19 |
[이펙티브 자바] 아이템5: 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (0) | 2022.04.18 |
[이펙티브 자바] 아이템4: 인스턴스화를 막으려거든 private 생성자를 사용하라 (0) | 2022.04.18 |
[이펙티브 자바] 아이템3: private 생성자나 열거 타입으로 싱글턴임을 보증하라 (0) | 2022.04.18 |