본문 바로가기
JAVA

JAVA_JVM 메모리 구조

by haheaven 2021. 7. 28.

JVM : Java Virtual Machine ( 자바 가상 머신 )

 

 

- 응용프로그램이 실행되면 JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 JVM은 이 메모리를 용도에 따라 나눔

--> 3가지 주요 영역 : method area, call stack, heap

① 메서드 영역 (method area)

 : 어떤 클래스가 사용되면, JVM은 해당 클래스의 파일을 읽어 분서하여 정보를 클래스데이터에 저장한다. 이 때, 클래스변수도 함께 저장

② 힙(heap) : 인스턴스가 생성되는 공간  => 인스턴스 변수 생성 

③ 호출스택(call stack) : 메서드의 작업에 필요한 메모리 공간 제공, 메서도가 호출되면 호출 스택에 메모리를 할당하고, 메서드를 종료하면 반환

* 호출 스택 생성 예시

class CallStack
      public static void main(String[] args) {
	    System.out.println("main(String[] args)이 시작");
		firstMethod();
		System.out.println("main(String[] args)이 끝");
	}
	
	static void firstMethod() {
		System.out.println("firstMethod()이 시작");
		secondMethod();
		System.out.println("firstdMethod)이 끝");
	}
	
	static void secondMethod() {
		System.out.println("secondMethod)이 시작");
		System.out.println("secondMethod)이 끝");
	}
}

--> 스택 순서 그림으로 살펴보면, (매서드 안의 코드들이 수행되지 않으면 스택에 대기해야함)

 

 

 

 

참고 : 자바의 정석(남궁성)

댓글