인프런 커뮤니티 질문&답변

도토리님의 프로필 이미지

작성한 질문수

스프링 핵심 원리 - 기본편

싱글톤 패턴

static 영역 및 객체 생성

작성

·

200

0

강의자료에 'static 영역에 객체 instance를 미리 하나 생성해서 올려둔다.'라고 되어있는데요. heap 영역에 SingletonService 인스턴스를 생성하고 이 인스턴스에 주소값이 static 영역에 저장된다는 말이 맞을까요?? static 변수라도 객체 인스턴스는 heap 영역에 저장되는게 맞을까요?

답변 2

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 도토리님

static 변수라도 객체 인스턴스는 heap 영역에 저장되는 것이 맞습니다.

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

도토리님의 질문에 대한 답변을 드리자면, 말씀하신 내용이 맞습니다. 객체 인스턴스는 실제로 힙(Heap) 영역에 생성되며, static 변수에 저장되는 것은 이 힙 영역에 생성된 인스턴스의 참조(주소) 값입니다.

스프링 프레임워크에서 싱글톤(Singleton) 패턴을 구현할 때 사용하는 방식 중 하나가 바로 이러한 과정을 거치는 것입니다. 클래스 내부에 private static으로 선언된 싱글톤 인스턴스 변수가 존재하고, 해당 인스턴스는 클래스가 메모리에 로드될 때 생성되어 힙 영역에 저장됩니다. 이후, 이 인스턴스에 접근하기 위해 제공되는 public static 메서드를 통해서만 인스턴스에 접근할 수 있으며, 이 메서드는 힙 영역에 저장된 인스턴스의 참조를 반환합니다.

이와 관련된 질문과 답변이 이미 있었습니다. 비슷한 상황에서의 질문이므로 참고하시면 도움이 될 것 같습니다:

  • 링크: static SingletonService getInstance() 질문입니다.
    이 답변에서는 static 변수와 인스턴스 생성 방식에 대해 설명하고 있습니다. 특히, static 변수가 존재하는 static 영역에 인스턴스의 참조값이 보관된다는 개념과 이 인스턴스가 실제로는 힙 영역에 생성된다는 점이 잘 설명되어 있습니다.

객체 인스턴스는 힙 영역에 저장되고, static 변수를 사용하여 이 인스턴스의 참조를 static 영역에서 관리하는 방식을 이해하는 것이 중요합니다. 이 방식은 자바 및 스프링 기반 애플리케이션에서 널리 사용되며, 특히 싱글톤 패턴 구현에 핵심적인 역할을 합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.