본문 바로가기
web/SpringBoot

[SpringBoot] 생명주기와 메모리관리

by 뽀리님 2023. 12. 15.

왠 XXX같은 사람이 이상한 질문을 해서 정리하는 글

 

Spring Boot의 생명주기

- 일반적으로 Spring 과 동일하다. 간편하게 축약해봄

        • 초기화 (Initialization): Spring Boot 애플리케이션이 시작될 때, 애플리케이션 컨텍스트를 설정하고, (Bean)들을 등록하며, 다양한 설정이 로드
        • 실행 (Execution) : 등록된 빈들이 초기화되고, 서비스들이 실행됨. 애플리케이션의 경우 내장 서버가 시작되고, HTTP 요청을 받을수 있음
        • 종료 (Shutdown) :리소스의 정리 해제가 이루어지고, 애플리케이션 종료 전에 후처리 작업이 수행
        • 이벤트 (Events): 이벤트 리스너를 등록하여 특정 이벤트가 발생할 특정 작업을 수행

Spring Boot 애플리케이션은 주로 스프링 프레임워크의 컴포넌트들을 기반으로 하며, 스프링의 일반적인 라이프사이클을 따른다.

내장 서버의 시작 종료, 빈의 초기화 소멸 등을 관리해준다.

 

Spring 의 메모리관리

결국 스프링도 자바고.... JVM 에 의해 관리가된다.

GC가 알아서 처리해준다.

 

여기서 조금 더 짚고 넘어가자면 @Bean(빈객체)는 어디에 할당이 될까?

이놈은 싱글톤이므로 Heap 영역에 할당된다.

(싱글톤 : 특정 클래스의 인스턴스가 오직 하나만 생성되도록 보장하는 패턴)

 

Heap 영역에 있기 때문에 가비지 컬렉션의 대상이 때까지 유지된다.

일반적으로 애플리케이션 컨텍스트가 종료되면 해당 빈도 함께 소멸됨

 

그외에 프리미티브변수(원시변수), 메소드변수등은 Stack에 저장될꺼고...

인스턴스 및 오브젝트들은 물론 Heap 으로 가겠지,

static 같은 변수들은 static(메소드,데이터) 영역으로...

프로그램이 종료되면 없어진다.

 

라고 대답했는데 XXX같은 사람은 아니라고 박박 우긴다. 대체 뭘 물어본거지?

 

 

 

 

'web > SpringBoot' 카테고리의 다른 글

@Secured vs @PreAuthorize, @PostAuthorize  (0) 2024.04.01
[WebClient] Memory Leak  (0) 2023.12.15
[SpringBoot] 다중 유저 요청처리  (1) 2023.12.15
[WebClient] Block vs Subscribe vs Tuple  (1) 2023.12.04
[SpringBoot] ConvertUtils 클래스  (0) 2023.12.01