#메소드영역 #힙역역 #JVM스택영역

메모리 사용 영역

java.exe로 JVM이 시작되면 JVM은 운영체제에서 할당받은 메모리 영역을 다음과 같이 세부 영역으로 구분하여 사용한다.

데이터영역

🔗 메소드 영역

특정 클래스가 사용되면 클래스파일 (*.class)를 읽어 클래스별로 런타임 상수풀, 필드 데이터, 메소드 데이터, 메소드 코드, 생성자 코드 등을 분류해서 저장한다. 메소드영역은 JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역이다.

🔗 힙 영역

객체와 배열이 생성되는 영역이다. 참조하는 변수나 필드가 없다면 JVM은 쓰레기 수집기를 실행시켜 쓰레기 객체를 힙영역에서 제거한다.

🔗 스택 영역

JVM 스택 영역은 각 스레드마다 하나씩 존재해 스레드가 시작될 때 할당된다. 메소드를 호출할 때마다 프레임을 추가(push)하고 메소드가 종료되면 프레임을 제거(pop)한다. 프레임 내부에는 로컬 변수 스택이 있는데 기본 타입 변수와 참조 타입 변수가 추가(push), 제거(pop)된다.

💡 기본 타입와 참조 타입

기본 타입 변수는 byte, char, short, int, long, boolean 등 이고 변수안에 실제 값을 저장한다.

참조 타입 변수는 배열, 열거, 클래스, 인터페이스 이 있고 변수안에 메모리의 번지를 값으로 갖는다. 기본타입참조타입