00. 전제 조건
자바 코드 내에 클래스를 정의하는 것만으로는 메모리에 할당되지 않고, 'new' 키워드를 통해
인스턴스를 생성하여 객체가 생성되는 순간 클래스에 정의된 필드와 메서드가 메모리에 할당된다는 점을 기억하자.
01. 클래스가 메모리에 할당되는 시점
클래스가 처음 참조될 때, JVM의 클래스 로더에 의해 메모리에 로드된다. 이 과정은 클래스 하나 당 한 번만 발생한다.
02. 인스턴스 생성
'new' 키워드와 함께 생성자를 호출하면, JVM은 힙(heap) 메모리 영역에 객체를 위한 공간을 할당한다.
이 공간에 객체의 모든 인스턴스 변수에 대한 메모리가 포함된다.
03. 생성자 호출
객체의 생성자가 호출되어 초기화가 이루어진다. 생성자 내 코드가 실행되며, 필드 변수들이 초기화된다.
04. 객체의 소멸
자바에서 객체의 소멸은 개발자가 직접 관리하는 것이 아닌, 가비지 컬렉터(GC)에 의해 자동으로 관리된다.
객체에 더 이상 참조되는 변수가 없을 때, GC가 이를 감지하여 메모리에서 해제한다.
05. GC의 실행
가비지 컬렉터는 JVM에 의해 주기적으로 실행되거나, 메모리가 부족할 때 실행된다.
가비지 컬렉터가 실행되면, 참조되지 않는.. 즉, 더 이상 앱에서 사용되지 않는 객체를 탐색한다.
그리고 탐색된 참조되지 않는 객체를 메모리에서 제거하고, 해당 공간을 다시 사용할 수 있도록 만든다.
'~2024.10' 카테고리의 다른 글
[자바] 자바의 메모리 구조(Stack / Heap / Method Area) (0) | 2024.03.31 |
---|---|
[GPT4 답변 공유] 안드로이드 git ignore 사용법 (0) | 2024.03.31 |
[Android] 안드로이드 스튜디오에서 git을 통한 버전 관리 세팅 (0) | 2024.03.28 |
[네트워크] 소켓(Socket)에 대한 개념적 정리(초급~중급) (0) | 2024.03.23 |
[Android] Java.Nio 패키지 정리 글 (0) | 2024.03.19 |