Dev/JAVA

[Effective JAVA] 불필요한 객체 생성을 피하라 ( 아이템6 )

록흐 2024. 3. 20. 22:52
반응형

 

똑같은 기능의 객체를 매번 새롭게 생성하는 것보다 불변 객체를 만들어 사용하는 것이 좋다. 

 

new String으로 매번 문자열 객체를 사용하는 것보다 리터럴 문자열을 사용하는 것이 좋다. JAVA는 문자열 상수 풀을 Heap 메모리에서 관리하는데, 리터럴 문자열 객체를 불변객체로 관리한다. 

 

불필요한 객체생성을 막으려면 생성자는 private로 막고 정적 팩터리 메서드로 객체를 반환하는 방식이 좋다.  생성자는 new 연산자로 호출할 때마다 생성되지만 정적팩토리 메서드는 전혀 그렇지 않다. 메서드가 호출 될 때마다 객체를 생성하지 말고 정적메서드로 불변객체 하나만 사용하면 된다. 

 

래퍼클래스에 의한 오토박싱은 필요한 기능이지만 잘못사용하면 무분별한 객체생성으로 이어질 수 있다.

 

그러나 요즘 JVM 성능이 좋아져 무조건 객체를 재사용한다고 좋은 것이 아니다. 새로운 객체를 만들어야 할 때는 만들어야 한다. 프로그램의 명확성, 간경성,을 위해서 객체를 추가로 생성하는 것이라면 일반적으로 좋다고 할 수 있다. 

 

 

반응형