ex) 🥐 붕어빵을 예시로 들면,
붕어빵 틀은 붕어빵을 만들기 위한 도구일 뿐 실제 붕어빵이 아니다.
붕어빵 틀(클래스)를 통해 만들어진 실제 붕어빵이 인스턴스에 해당된다.
// 객체 생성
// Car 클래스는 객체를 생성하기 위한 틀이며, car1과 car2는 각각의 인스턴스이다.
Car car1 = new Car("Tesla Model S", 2020);
Car car2 = new Car("BMW i8", 2019);
Heap 메모리 개념JVM)이 객체를 저장하기 위해 사용하는 메모리 영역
이미지 출처 :: https://unicminds.com/what-are-stack-and-heap-memory/
Heap 메모리 구조
Minor GC가 발생한다.Eden 영역과 두 개의 Survivor 영역(S0 및 S1)으로 나뉜다.Survivor 영역은 최소 GC 1번 이상 살아남은 객체가 존재하며, S0 또는 S1 둘 중 하나는 꼭 비어 있어야 한다.🧹 Minor GC
- 주로 Young 영역(
Young Generation)에서 수행되며, 새로 생성된 객체들을 관리한다.- 객체들은 처음에
Eden영역에 할당되고, 일정 주기마다 살아남은 객체는Survivor영역(s0,s1)을 번갈아가며 이동하며Compact과정을 거치고 최종적으로Old영역(Old Generation)으로 이동한다.
Young 영역에서 살아남은 객체가 복사되는 영역Young 영역보다 크게 할당되며, 영역의 크기가 큰 만큼 가비지는 적게 발생한다.Old 영역에 대한 가비지 컬렉션(Garbage Collection)을 Major GC 또는 Full GC라고 부른다.Major GC는 Old 영역(Old Generation)의 메모리가 부족해지면 발생하게 된다.Major GC는 일반적으로 Minor GC보다 시간이 오래걸리며, 10배 이상의 시간을 사용하며, Stop-The-World 문제가 발생하게 된다.⛔️ Stop-the-world
GC를 수행하기 위해JVM이 프로그램 실행을 멈추는 현상GC를 실행하는Thread를 제외한 모든Application의Thread가GC종료 전까지 일시정지 된다.
다양한 가비지 컬렉션 알고리즘이 존재하며 상황에 따라 필요한 GC 방식을 설정해서 사용할 수 있다. 관련 내용은 다음에 계속..🥹🫧
출처
[자바] 인스턴스(Instance)란?
자바 객체와 인스턴스의 차이점 이해하기
[Java] 클래스와 객체(1)
JAVA8 이후의 heap 메모리 구조와 GC 알고리즘
JVM Garbage Collection (GC) 핵심개념 알아보자
☕ 가비지 컬렉션 동작 원리 & GC 종류 💯 총정리