본문 바로가기

java(자바)

[java(자바)] 자바의 메모리 영역 5가지 _디버깅의 눈물

자바의 메모리 영역

 

 

1. 메서드 영역(Method Area)

: 클래스 파일에 대한 정보가 저장되는 공간입니다. 클래스 이름, 부모 클래스, 변수, 상수 풀 등 클래스 정보와 메서드가 저장됩니다. 프로그램 종료 시까지 유지됩니다.

 

2. 힙 영역(Heap Area)

: 객체가 생성될 때 사용되는 메모리 공간입니다. New 키워드를 사용해 객체를 생성하면, 해당 객체가 Heap 영역에 할당됩니다. Heap 영역은 크기가 동적으로 변합니다. 가비지 컬렉션(Garbage Collection)의 관리 대상입니다.

 

3. 스택 영역(Stack Area)

: 메서드 호출 시 사용되는 메모리 공간입니다. 지역 변수, 파라미터, 리턴 값 등이 저장됩니다. 각각의 스레드마다 별도로 생성되며, 스레드가 종료되면 스택 영역도 함께 사라집니다.

 

4. PC(Program Counter) Register 영역

: 현재 실행 중인 스레드가 다음에 실행할 명령어의 주소를 저장하는 메모리 공간입니다. 즉, 다음에 실행할 명령어의 위치를 가리키는 포인터 역할을 합니다. 스레드마다 별도로 생성됩니다.

 

5. 네이티브 영역

: 자바 외부에서 작성된 C나 C++과 같은 네이티브 코드를 위한 메모리 영역입니다.