지연 초기화(lazy initialization) 지연 초기화란? - 필드의 값이 처음 필요할 때까지 초기화를 늦추는 기법 - 정적 필드와 인스턴스 필드 모두 사용 가능 - 주로 최적화 용도로 사용, 초기화 시 발생하는 위험한 순환 문제를 해결하는 효과도 존재 지연 초기화의 양면성 지연 초기화는 무조건 좋은 것이 아니라 경우에 따라 다른 양면성이 존재한다. - 클래스 혹은 인스턴스 생성 시의 초기화 비용 감소 - 반면 지연 초기화하는 필드에 접근하는 비용은 증가 - 필드를 초기화하는 비용, 횟수 등에 따라 지연 초기화 시 오히려 성능이 감소하는 경우도 있다. 즉, 인스턴스가 해당 필드를 잘 사용하지 않지만, 초기화 비용이 큰 경우에는 지연 초기화 도입을 고려할 필요성이 있다. 또한 멀티스레드 환경에서는 ..