1. 싱글톤이란?
특정 클래스의 인스턴스(객체)가 애플리케이션 전체에서 오직 하나만 생성되도록 보장하는 디자인 패턴.
- 생성자를 private으로 선언해서 외부에서 객체를 직접 만들 수 없도록 막음
- 클래스 내에 static 변수로 유일 객체를 저장함
- static 메서드를 통해 전역에서 동일 객체에 접근함
싱글톤의 목적
- 데이터베이스 커넥션 풀, 설정 객체 등 시스템 자원을 공유해야 하는 상황에서 객체가 여러 번 생성되는 것을 방지하고 하나만 생성해 메모리 낭비를 막음
- 전역적으로 일관된 객체를 사용할 수 있음
코드로 같이 알아보자
아래와 같은 싱글톤 패턴의 예시 코드가 있다. 하나 씩 같이 보자
class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {} // 외부에서 객체 생성 불가
public static Singleton getInstance() {
return instance;
}
}
// 사용 예시
Singleton s = Singleton.getInstance();
위 코드의 실행 순서를 따져보자.
컴퓨터 메모리에 Java코드가 실행되는 상황을 이미지로 그려보았다. (구글 시트 사용)

그림의 1) ~ 3) 순서로 보면된다.
private static Singleton instance = new Singleton();이 코드가 실행되면,- Singleton 객체가 힙(Heap) 영역에 생성. 주소 위치는 예시로 0x12345라 칭함
- 해당 객체의 주소(참조값)는 메서드 영역(Method area)에 위치한 static 변수(instance)에 저장.
- 즉, static 변수는 클래스 당 하나만 존재하며, 전역적으로 동일한 객체를 가리키게 된다.
public static Singleton getInstance()- 메서드 영역(Method area)에 올라가게 된다.
- 호출 시 instance 변수를 반환해서, 항상 같은 Singleton 객체를 참조하게 된다.
private Singleton()- 생성자를 private으로 선언하여 외부에서 객체를 추가로 생성하지 못하도록 막는다.
- 이에 따라 Singleton 객체는 오직 하나만 힙 영역에 생성.
📝
이렇게 Singletone패턴이란 자주 호출되는 객체를 단 한 번만 생성시켜 메모리 누수, 성능 저하를 막는 코드 디자인 패턴이다.
'Java' 카테고리의 다른 글
| [Java] Spring의 탄생 배경 (0) | 2025.12.11 |
|---|---|
| [Java] HashSet (0) | 2025.12.07 |
| [Java] Stream - map과 flatMap (0) | 2025.11.26 |
| [Java] 단일 책임 원칙(SRP)과 개방-폐쇄 원칙(OCP) (0) | 2025.11.25 |
| [Java/Set] HashSet, LinkedHashSet, TreeSet (0) | 2025.10.21 |