프로그래밍/Java

JVM의 메모리 구조

김치치즈스마일 2017. 8. 13. 15:35

JVM은 용도에 따라 여러 영역으로 나누어 메모리를 관리한다.

과연 어떤식으로 관리하는지 알아보자.

 

 

메서드 영역 (Method Area = Class Area = Static Area)

· 프로그램 실행 중 어떤 클래스가 사용되면, JVM은 해당 클래스의 클래스 파일(*.class)을 읽어서 분석하여 클래스에 대한 정보를 이곳에 저장함. 이 때, 그 클래스의 클래스 변수도 이 영역에 함께 저장.

 

호출 스택 (Call Stack 또는 Execution Stack)

· 메서드의 작업에 필요한 메모리 공간을 제공.

· 메서드가 호출되면, 메서드 수행에 필요한 메모리 공간을 할당, 메서드가 종료되면 사용하던 메모리를 반환하고 스택에서 제거.

· 메서드가 작업을 수행하는 동안 지역 변수(매개 변수 포함)들과 중간 결과 등을 저장함.

· 호출 스택 맨 위에 있는 메서드가 현재 실행 중인 메서드.

 

힙 (Heap)

· 인스턴스가 생성되는 공간.

· new 연산자에 의해서 생성되는 배열과 객체는 모두 여기에 생성.

 

 

[참고] 자바의 정석