서블릿 컨테이너는 각 인스턴스가 싱글톤이 되는 것을 보장한다.
즉, 멀티스레드 환경에서는 여러명의 사용자가 인스턴스를 재사용한다.
<스택>
각 메소드별로 스택 프레임 생성.
어떤 특정 메소드가 실행되면 스택 프레임의 로컬 변수 영역 첫번째 위치에
자기자신에 대한 위치가 저장.
<힙>
자기 자신을 가리키는 인스턴스를 따라가면 힙에 싱글톤으로 생성되어 있는 것을 확인.
여러개의 쓰레드에서도 단 하나의 인스터스를 따라가게 되고, 상태를 공유하게 됨.
해결하기 위해, ThreadLocal
을 사용하거나 메소드안에서 필드를 생성.
메소드 안에서 생성하게 되면 전체적인 인스턴스는 힙에서 단 하나 생성되지만, 인스턴스의 상태를 힙에서 공유하지 않게 된다.