지연초기화
지연 초기화는 필드의 초기화 시점을 그 값이 처음 필요할 때까지 늦추는 기법입니다. 그래서 값이 전혀 쓰이지 않으면 초기화도 일어나지 않습니다. 이 기법은 정적 필드와 인스턴스 필드 모두에 사용할 수 있습니다. 주로 최적화 용도로 쓰이지만, 클래스와 인스턴스 초기화 때 발생하는 위험한 순환 문제를 해결하는 효과도 있습니다.
지연초기화의 단점
지연초기화는 필드 혹은 인스턴스 생성시 초기화 비용은 줄지만 초기화하는 필드에 접근하는 비용은 커집니다. 지연 초기화 하려는 필드들 중 결국 초기화가 이뤄지는 비율에 따라, 실제 초기화에 드는 비용에 따라, 초기화된 각 필드를 얼마나 빈번히 호출하느냐에 따라 지연 초기화가 실제론느 성능을 느려지게 할 수도 있습니다.
멀티스레드 환경
멀티스레드 환경에서는 지연 초기화를 하기가 까다롭습니다. 지연 초기화하는 필드를 둘 이상의 스레드가 공유한다면 어떤 형태로든 반드시 동기화해야 합니다. 그렇지 않으면 심각한 버그로 이어질 수 있습니다.
결론
대부분의 상황에서 일반적인 초기화가 낫습니다.
반응형