웹개발 기본상식
프로그래밍 언어의 생명주기(LifeCycle) 의미
Irene1988
2025. 6. 24. 14:37
솔직히 생명주기 라는 단어를 들었을때, 무슨 뜻인지 전혀 이해가 가지 않았다.
지금도 이해가 가지 않는다.
누군가 설명하라고 했을때, 설명할 자신이 없다.
그래서 이 블로그에 남겨놓는다.
챗GPT한테 이 '생명주기'에 대해 개념을 물어보았다.
**프로그래밍 언어에서 "생명주기(Lifecycle)"**라는 말은, **무언가(예: 변수, 객체, 프로세스 등)**가 "생겨나서(생성)" → "사용되다가" → "사라지는(소멸)" 과정을 뜻해. 즉, 어떤 것이 메모리에 존재하는 시간 범위를 말하는 것이다.
🔍 예시
1. 변수의 생명주기
- 지역변수(local variable): 함수 안에서 선언된 변수는 함수가 호출될 때 생성되고, 함수가 끝나면 자동으로 사라져(소멸).
def my_func():
x = 10 # 여기서 x 생성
print(x)
# my_func()가 끝나면 x는 메모리에서 사라짐
2. 객체의 생명주기 (예: Python, Java, C# 등에서)
- 객체는 new 같은 키워드로 생성되거나 클래스 인스턴스를 만들면 생성됨.
- 이후 해당 객체를 사용하다가, 더 이상 참조되지 않으면(즉, 사용할 코드가 없으면) **GC(Garbage Collector)**가 자동으로 메모리에서 삭제함.
3. 웹 애플리케이션에서의 생명주기
예: Spring Framework의 Bean, React 컴포넌트 등도 "생명주기"를 가짐
- 생성(Mount) → 업데이트(Update) → 소멸(Unmount) 단계로 나뉘기도 한다
🔁 생명주기의 목적?
- 메모리 효율을 위해서야. 필요할 때만 메모리를 사용하고, 안 쓰면 정리해서 낭비를 줄이기 위한 개념
✅ 정리
개념 | 설명 |
생성 | 메모리에 올라옴 (메모리 할당) |
사용 | 프로그램이 해당 값을 참조하거나 기능을 사용함 |
소멸 | 더 이상 필요 없으면 메모리에서 제거됨 |
🔵 리액트의 생명주기(Lifecycle)란?
리액트 컴포넌트는 화면에 나타나고 → 업데이트되고 → 사라지는 과정이 있음
이 과정을 **생명주기(Lifecycle)**라고 부름.
📌 클래스 컴포넌트 기준 생명주기
단계 | 메서드 | 설명 |
마운트(Mount) | constructor, componentDidMount 등 | 처음 화면에 등장할 때 |
업데이트(Update) | componentDidUpdate | props, state 변경 시 |
언마운트(Unmount) | componentWillUnmount | 화면에서 사라질 때 |
✅ 함수형 컴포넌트에서는?
함수형 컴포넌트에서는 useEffect() 훅을 사용해서 생명주기 관리한다.
import { useEffect } from "react";
function MyComponent() {
// 마운트 시 실행
useEffect(() => {
console.log("컴포넌트 생성됨!");
// 언마운트 시 실행 (정리 함수)
return () => {
console.log("컴포넌트 사라짐!");
};
}, []); // 의존성 배열이 비어 있음 → 한 번만 실행
}
🔸 왜 “리액트 생명주기가 짧다”는 말이 나올까?
리액트는 SPA(Single Page Application) 기반이라서,
컴포넌트를 자주 만들고, 필요 없으면 바로 없애는 방식
즉,
- 페이지 이동할 때마다 컴포넌트가 Mount → Unmount
- 상태(state)나 props가 바뀌면 컴포넌트가 재렌더링
- 이때마다 **"짧게 존재했다가 다시 사라지는 느낌"**
🔁 요약
구분 | 설명 |
리액트 생명주기 | 컴포넌트가 생성되고, 업데이트되고, 제거되는 과정 |
"짧다"는 의미 | 컴포넌트가 자주 생성되고 제거되며 상태에 따라 재렌더링됨 |
함수형 기준 | useEffect()로 생명주기 관리함 |