웹개발 기본상식

프로그래밍 언어의 생명주기(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()로 생명주기 관리함