반응형
JVM이란?
JVM은 Java Virtual Machine의 약자로, 자바 가상 머신을 의미합니다. JVM은 자바 프로그램을 실행하기 위한 가상화된 환경을 제공합니다. 자바 프로그램이 플랫폼 독립적으로 실행될 수 있도록 해주는 핵심 요소입니다.
자바의 메모리 관리는 JVM(Java Virtual Machine)이 담당하며, 여러 영역으로 나누어져 있습니다. 각 영역은 특정 목적에 따라 관리되며, JVM은 이를 통해 메모리 할당 및 해제를 관리합니다. 여기서는 주요한 메모리 영역과 객체, 메소드, 변수의 저장 방법에 대해 설명하겠습니다.
자바의 메모리 영역
- 메소드 영역(Method Area 또는 PermGen):
- 클래스 파일에서 로드된 클래스의 정보(클래스 이름, 메소드 정보, 상수 풀 등)가 저장됩니다.
- JVM이 시작될 때 생성되며, 모든 스레드가 공유하는 영역입니다.
- Java 8부터는 PermGen 영역이 없어지고, Metaspace로 대체되었습니다.
- 힙 영역(Heap):
- 객체와 배열이 생성되는 영역입니다.
- 동적으로 할당되며, GC(Garbage Collector)에 의해 관리됩니다.
- Young Generation과 Old Generation으로 나뉘며, Young Generation에는 Eden 영역과 Survivor 영역이 있습니다.
- 스택 영역(Stack):
- 각 스레드마다 개별적으로 존재하며, 스레드가 실행될 때마다 생성됩니다.
- 메소드 호출 시 로컬 변수, 매개변수, 리턴 값 및 연산 중 발생하는 임시 값 등을 저장합니다.
- 스택 프레임(Stack Frame)이라는 단위로 관리되며, 메소드 호출 시마다 새로운 스택 프레임이 생성되고 메소드가 종료되면 스택 프레임이 제거됩니다.
객체, 메소드, 변수의 저장 방법
- 객체(Object):
- 객체는 힙 영역에 저장됩니다.
- new 키워드로 생성된 객체는 힙 영역의 동적 할당 공간에 저장됩니다.
- 객체는 인스턴스 변수를 포함하며, 이들은 객체가 생성될 때마다 객체의 힙 공간에 할당됩니다.
- 메소드(Method):
- 메소드 코드는 클래스 파일의 메소드 영역에 저장됩니다.
- 클래스가 로드될 때 메소드 코드가 메소드 영역에 로드되며, 각 메소드의 코드는 공유됩니다.
- 메소드의 실제 실행은 스레드의 호출 스택(Stack)에서 이루어집니다.
- 변수(Variable):
- 지역 변수는 스택 영역에 저장됩니다.
- 메소드 실행 중에 선언된 변수들이 여기에 저장되며, 스택 프레임에 할당됩니다.
- 기본 데이터 타입(primitive type) 변수와 참조(reference) 변수가 있으며, 참조 변수는 힙 영역의 객체를 참조합니다.
메모리 관리와 GC
- 가비지 컬렉터(GC): 사용하지 않는 객체들을 메모리에서 해제하는 JVM의 메커니즘입니다.
- GC는 주기적으로 실행되며, 더 이상 참조되지 않는 객체들을 자동으로 파악하고 해제하여 메모리를 관리합니다.
- GC는 힙 영역에서 동작하며, Young Generation과 Old Generation에서 다른 방식으로 동작하여 메모리 사용을 최적화합니다.
요약
자바는 다양한 메모리 영역을 통해 객체, 메소드 및 변수를 효율적으로 관리하며, 이는 JVM이 메모리 할당 및 해제를 관리하는 중요한 역할을 합니다. 각 영역은 특정 목적에 따라 다르게 동작하며, 이를 이해하고 적절히 활용하는 것이 자바 프로그래밍의 중요한 요소입니다.
반응형
'Programming > Java, Kotlin' 카테고리의 다른 글
[Java] ThreadPoolExecutor란? 주요 기능, 사용예시, 장점, 동작 방식 (0) | 2024.06.22 |
---|---|
[Java] 가비지 컬렉션이란? (가비지가 객체를 수집하는 방법, 사용하는 알고리즘) (0) | 2024.06.22 |
[Java] 멀티스레드, 스레드풀이란? 사용예시, 장단점, 차이점 (0) | 2024.06.22 |
[Java] Exception 예외처리란? 예외처리 종류, 예시, 장단점 (0) | 2024.06.22 |
[Java] 컬렉션 프레임워크(Collection Framework), 동시성 컬렉션(concurrent collection) 이란? 장단점, 차이 (0) | 2024.06.22 |