알아가기/Spring

[Spring] Eager Instantiation Vs Lazy Instantiation

XEV 2023. 11. 5. 01:14

 

 

 

Eager Instantiation

  • 즉시 생성: 인스턴스는 필요한 시점이 아니라 미리 객체 생성 시 초기화
  • 미리 계산: 필요하지 않은 정보까지 미리 계산하고 저장
  • 높은 메모리 사용량: 모든 인스턴스가 미리 생성되므로 메모리 사용량이 높음
  • 높은 초기화 비용: 모든 객체가 초기화되므로 초기화 비용이 높을 수 있음
  • 예측 가능한 성능: 인스턴스가 필요한 시점에 사용 가능하므로 성능 예측이 용이
  • 복잡한 객체 그래프: 복잡한 객체 그래프를 구축하는 경우 메모리와 성능 문제가 발생할 수 있음
  • 주로 단순한 응용 프로그램에 적합

 

 

 

 

Lazy Instantiation

  • 필요할 때 생성: 인스턴스는 실제로 필요한 시점에 생성
  • 지연 계산: 필요한 정보만 생성하고 저장하므로 불필요한 계산을 피할 수 있음
  • 낮은 메모리 사용량: 필요한 시점에만 객체를 생성하므로 메모리 사용량이 낮을 수 있음
  • 낮은 초기화 비용: 필요한 정보만 초기화되므로 초기화 비용이 낮을 수 있음
  • 성능 변동 가능: 객체 생성 및 초기화가 필요한 시점에 따라 성능이 변동할 수 있음
  • 복잡한 객체 그래프 관리 용이: 객체 그래프가 복잡한 경우 메모리와 성능을 효율적으로 관리할 수 있음
  • 대규모 응용 프로그램 및 리소스 효율성을 고려할 때 적합