반응형
똑같은 기능의 객체를 매번 새롭게 생성하는 것보다 불변 객체를 만들어 사용하는 것이 좋다.
new String으로 매번 문자열 객체를 사용하는 것보다 리터럴 문자열을 사용하는 것이 좋다. JAVA는 문자열 상수 풀을 Heap 메모리에서 관리하는데, 리터럴 문자열 객체를 불변객체로 관리한다.
불필요한 객체생성을 막으려면 생성자는 private로 막고 정적 팩터리 메서드로 객체를 반환하는 방식이 좋다. 생성자는 new 연산자로 호출할 때마다 생성되지만 정적팩토리 메서드는 전혀 그렇지 않다. 메서드가 호출 될 때마다 객체를 생성하지 말고 정적메서드로 불변객체 하나만 사용하면 된다.
래퍼클래스에 의한 오토박싱은 필요한 기능이지만 잘못사용하면 무분별한 객체생성으로 이어질 수 있다.
그러나 요즘 JVM 성능이 좋아져 무조건 객체를 재사용한다고 좋은 것이 아니다. 새로운 객체를 만들어야 할 때는 만들어야 한다. 프로그램의 명확성, 간경성,을 위해서 객체를 추가로 생성하는 것이라면 일반적으로 좋다고 할 수 있다.
반응형
'Dev > JAVA' 카테고리의 다른 글
[Effective JAVA] 변경가능성을 최소화 하라. ( 아이템 17 ) (0) | 2024.03.21 |
---|---|
[Effective JAVA] 클래스와 멤버의 접근권한을 최소화하라. ( 아이템15 ) (0) | 2024.03.20 |
[Effective JAVA] 자원을 직접 명시하지 말고 의존객체 주입을 사용하라. ( 아이템5 ) (0) | 2024.03.20 |
[Effective JAVA] 인스턴스화를 막으려거든 private 생성자를 사용하라. ( 아이템 4 ) (0) | 2024.03.20 |
[Effective JAVA] private 생성자나 열거타입으로 싱글턴임을 보증하라. ( 아이템 3 ) (0) | 2024.03.20 |