중앙정보기술인재개발원/JAVA

[JAVA] Garbage Colletion(가비지 컬렉션)

soidev 2025. 3. 12. 09:18

Garbage Colletion

    더 이상 사용되지 않는 객체를 자동으로 제거하여 메모리를 효율적으로 관리하는 기능   

  • Java, Pytho, C# 등 메모리를 자동 관리하는 언어에서 사용됨  장점
  • C, C++ 에서는 사용되지 않으며 개발자가 직접 메모리(free() 등) 해야함.
  1. Garbage Colletion 동작 방식:
    • 객체가 생성됨 → 힙(Heep) 메모리에 저장됨.
    • 사용 중인 객체 → 계속 참조됨(제거되지 않음)
    • 사용하지 않는 객체 → 참조가 끊어지면 가비지 컬렉터가 자동으로 제거함.
    • 메모리가 확보됨 → 새로운 객체를 위한 공간이 생김.
  2. Java의 Garbage Colletion 특징
    • JVM(Java Virtual Machine)이 자동으로 실행
    • 개발자가 직접 delete 같은 명령을 쓸 필요 없음
    • Stop-the-World(일시정지) 현상이 발생할 수 있음 → 프로그램이 멈출 수도 잇음
    • 가비지 컬렉터 종류가 다양함(Serial GC, Parallel GC, G1 GC 등)

 


메모리 사용 영역

    JVM이 사용하는 메모리 영역에 대해서 알아보겠다.  

  • JVM은 운영체제로부터 메모리를 할당받는다.

 

  1. 메소드 영역
    • JVM이 시작할 때 생성되고, 모든 스레드가 공유하는 영역
    • 코드에서 사용되는 클래스들을 클래스 로더로 읽어 클래스별로 정적필드와 상수,메소드코드, 생성자 코드 등을 분류해서 저장
  2. 힙 영역
    • 객체와 배열이 생성되는 영역
    • 여기에 생성된 객체와 배열을 JVM 스택 영역의 변수나 다른 객체의 필드에서 참조
    • 참조하는 변수나 필드가 없다면 의미 없는 객체가 되기때문에 JVM이 이것을 쓰레기 취급하고 Garbage Collector를 실행시켜 자동으로 제거
  3. JVM 스택 영역
    • 메소드를 호출할 때마다 프레임을 추가하고 메소드가 종료되면 해당 프레임을 제거하는 동작을 수행
    • 스택 영역에 변수가 생성되는 시점은 초기화가 될 때, 즉 최초로 변수에 값이 저장될때
    • 변수는 선언된 블록 안에서만 스택에 존재하고 블록을 벗어나면 스택에서 제거

'중앙정보기술인재개발원 > JAVA' 카테고리의 다른 글

[JAVA] Scanner  (1) 2025.03.17
[2주차] 연산자  (0) 2025.03.12
[JAVA] 형변환 | promotion, type casting  (1) 2025.03.11
2주차 [개발 환경 세팅하기]  (1) 2025.03.10
1주차 정리  (0) 2025.03.07