728x90
반응형
#가비지 컬렉터가 나온 이유?
- C, C++언어는 할당한 메모리를 직접 해제 해줘야 한다. 따라서, 메모리 누수와 같은 문제가 발생하기 쉽다.
- Java에서는 가비지 컬렉터를 도입하여 자동으로 사용하지 않는 메모리를 회수해, 메모리 관리를 보다 효율적으로 할 수 있다.
#가비지 컬렉터
- Stop the world
- GC를 위해 JVM이 실행을 멈추는 현상
- GC를 실행중인 스레드를 제어하고 모든 스레드의 작업을 중단, GC 작업이 끝나면 다시 실행
- GC의 대상
- JVM메모리 영역에서 객체들은 heap영역에서 생성되고 stack 영역이나 method 영역에서는 객체의 주소값만 저장 → 참조하는 객체
- heap 영역에서 생성되어 참조하지 않는 객체들 → 참조하지 않는 객체
- Mark and Sweep
- 참조하는 객체들끼리 마킹
- 참조하지 않는 객체 heap에서 제거
⇒ 용어를 말 해도 괜찮음
#Young 영역 vs Old 영역
- Young 영역
- 새롭게 생성된 객체가 할당되는 영역으로 금방 참조하지 않는 객체의 상태가 된다. → 사라짐
- Minor GC라고 부름
- Old 영역
- Young 영역에서 참조상태로 오래 남아있는 객체가 복사 되는 영역으로 가비지가 적게 발생된다.
- Major GC라고 부름 → 시간이 많이 소요
728x90
반응형
'LANGUAGE > JAVA' 카테고리의 다른 글
[JAVA] JDK, JRE란 무엇인가? JDK와 JRE의 차이점? (1) | 2024.01.09 |
---|---|
[JAVA] 자바 11에서 17로 버전 업그레이드 (0) | 2024.01.08 |
[JAVA] 체크 예외(Checked Exception) 언체크 예외(Unchecked Exception)의 차이 (0) | 2023.08.08 |
[JAVA] Iterator 의 사용 목적과 특징 / Collection Framework (0) | 2023.06.26 |
[JAVA] Array, ArrayList, LinkedList 비교하기 / 차이점 (2) | 2023.06.26 |