2006년 2월 8일자 테크 팁
Singleton 패턴에 대해 많은 피드백이 접수되었다. 이 피드백 중에는 Singleton 클래스가 단일 클래스 로더를 통해 공유되지 않으면 Singleton이 아니라는 사실을 강조하는 내용도 포함되어 있다.
사실인즉, 서로 다른 클래스 로더에서 로드된 클래스들은 이름이 같고 동일한 패키지에 속하더라도 동일한 클래스가 아니다.
이를 이해하는 것이 중요한 이유는 무엇일까? 일부 환경에서는 흔히 복수 클래스 로더를 사용하고 있기 때문이다. 예를 들어, Java 2 Platform, Enterprise Edition (J2EE) 애플리케이션 서버는 클래스가 더 이상 필요치 않게 되면 클래스를 언로드할 수 있도록 복수의 클래스 로더를 사용한다(클래스에 대한 클래스 로더를 제거하면 메모리에서 클래스가 제거된다). 이 외에도, J2EE 애플리케이션 서버는 보안상의 이유로 클래스 격리를 위해 복수의 클래스 로더를 사용하기도 한다.
따라서, Singleton 클래스가 단일 클래스 로더(가령 시스템 클래스 로더)를 통해 공유되지 않는다면 그것은 Singleton이라고 할 수 없다.
댓글을 달아 주세요
유익한 글 감사합니다
2007/09/07 20:53세심하고 좋은 정보 감사 드립니다^^
2007/09/14 21:50저희 회사도 자바로 구동되는 시설감시 프로그램 많이 씁니다. 자바 좋은 나료 많이 얻어서 회사일에 많은 도움이 될것 같습니다.
2007/09/14 22:58좋은 정보 감사해요~
2007/09/19 04:41