자바 서버개발시 인스턴스 하나만 사용.
글쓴이: greatlee / 작성시간: 목, 2011/02/10 - 4:13오후
WAS에서는 컨테이너가 서블릿이나 JSP 객체를 하나만 생성해서.. 모든 쓰레드들이 하나의 객체를 동시 사용하는것으로 알고 있습니다.
스프링이 각광받는 이유도.. 자체적으로 싱글톤 레파지토리를 가지고 있어서.. 스프링에 등록한 빈 객체를 하나만 만들어서 메모리를 효율적으로 사용할 수 있기때문이고요.
하나의 객체만을 메모리에 적재하고.. 여러개의 쓰레드가 공유하는 방식은 자바 서버쪽 개발에서 자주쓰이는 방법으로 알고 있는데요.
그런데 제가 궁금한것은...
컨테이너(혹은 서버)에서 객체를 하나만 생성해도 힙에 생성되고.. 그 객체 내에는 로컬변수나 클래스변수를 비롯한 쓰레드들간에 공유되었을 때 위험한 정보들이 넘쳐나는데요
WAS나 스프링 설정을 보면... 객체를 풀로 관리하는것도 아닌듯 싶은데. 쌩쌩 잘도는게 이해가 가지 않습니다.
쓰레드간에 동기화를 통해서 객체를 한번에 하나의 쓰레드가 사용하는것 같지도 않은데 말이죠..
다시정리하면
n개의 쓰레드가 1개의 객체를 동시사용하는데.. 객체정보가 유지될 수 있는 이유와
그렇게 될 수 있는 메카니즘이 궁금합니다.
Forums:
댓글 달기