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

- 메소드 영역
- JVM이 시작할 때 생성되고, 모든 스레드가 공유하는 영역
- 코드에서 사용되는 클래스들을 클래스 로더로 읽어 클래스별로 정적필드와 상수,메소드코드, 생성자 코드 등을 분류해서 저장
- 힙 영역
- 객체와 배열이 생성되는 영역
- 여기에 생성된 객체와 배열을 JVM 스택 영역의 변수나 다른 객체의 필드에서 참조
- 참조하는 변수나 필드가 없다면 의미 없는 객체가 되기때문에 JVM이 이것을 쓰레기 취급하고 Garbage Collector를 실행시켜 자동으로 제거
- 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 |