1. 개요

JVM의 메모리는 크게 1) Method Area, 2) Heap Area, 3) Stack Area 로 나눌 수 있다.
 

2. 메모리 영역

2-1. Method Area

실행 중 어떠한 class가 사용되면, JVM은 해당 class의 class file(*.class)을 읽어 분석한 후 class 관련 정보를 이 영역에 저장한다. 이때 class 변수(variable)도 함께 저장된다.
 
모든 method(class method, instance method)는 static area에 로드 된다. 하지만 class method인 경우는 instance 생성 없이 class 이름으로 바로 호출 가능하고, instance method는 객체를 생성해야 한다. Instance method는 instance variable을 사용하기 때문이다.
 

2-2. Heap Area

Instance가 생성되는 공간이다. 실행 중 생성되는 instance는 이 영역에 저장된다. 즉, instance 변수(variable)가 저장되는 것이다. 관련된 내용에는 다음과 같는 것들이 있다.
 
 

2-3. Stack Area

Method의 작업에 필요한 공간이다. Method가 호출되면 Call Stack에 호출된 method를 위한 메모리가 할당되며, 이 메모리는 method가 작업을 수행하는 동안 local variable과 중간 연산 결과 등을 저장하게 된다. 그리고 method가 작업을 마치면 할당되었던 공간은 반환되어 비워진다.