본문 바로가기

Programming diary

18. October 11, 2020

싱글톤 패턴

-애플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하게 해서 하나의 인스턴스만 생성되게 하고, 그 인스턴스가 필요할 때마다 똑같은 인스턴스를 계속 만들어내는 게 아니라 이미 만들어진 인스턴스를 사용하게 함

 

 

싱글톤 패턴을 쓰는 이유?

1. 고정된 메모리 영역을 얻으면서 한번의 new로 인스턴스를 사용하기 때문에 메모리낭비 방지

2. 싱글톤으로 만들어진 인스턴스는 전역인스턴스이기 때문에 다른 인스턴스들의 데이터 공유 용이

3. DBCP(DataBase Connection Pool 의 약자로 DB와 커넥션을 맺고 있는 객체를 관리하는 역할)처럼 공통된 객체를 여러 개 생성해서 사용해야 하는 상황에서 많이 사용

4. 처음 한번만 생성하기 때문에 두번째 호출때부터는 객체로딩시간이 현저하게 줄어 성능에 도움

 

싱글톤 패턴의 문제점

1. 싱글톤 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유시킬 경우, 다른 클래스의 인스턴스들 간에 결합도가 높아져 객체지향설계원칙에 어긋나게 됨 >> 수정/테스트 어려워짐

2. 멀티스레드환경에서 동기화처리 안하면 인스턴스가 두개가 생성된다는지 하는 경우 발생 가능

 

>>holder에 의한 초기화(클래스 안에 클래스를 두어 JVM의 클래스 로더 매커니즘과 클래스가 로드되는 시점을 이용한 방법. JVM의 클래스 초기화 과정에서 보장되는 원자적 특성을 이용해 싱글턴의 초기화 문제에 대한 책임을 JVM이 지게 됨.

'Programming diary' 카테고리의 다른 글

20. October 18, 2020  (0) 2020.10.18
19. October 13, 2020  (0) 2020.10.13
17. October 7, 2020  (0) 2020.10.07
16. October 4, 2020  (0) 2020.10.04
15. October 2, 2020  (0) 2020.10.02