[Java] 클래스 로딩과 메모리 영역 (stack, heap, method area)


클래스 로딩


1. 클래스를 사용하는 시점에 해당 클래스의 바이트코드가 들어 있는 파일을 찾는다.

2. 찾은 파일은 메모리에 로딩된다.

   클래스의 바이트 코드는 "Method Area" 영역에 로딩된다. 


JVM이 관리하는 주요 메모리 영역


 1) Stack (스택)

메서드가 호출될 때마다 그 메서드의 로컬 변수를 준비하는 메모리 영역

메서드 호출이 끝나면 그 메서드를 위해 준비했던 모든 변수가 스택에서 제거된다.


 2) Heap (힙)

new 명령을 통해 생성된 인스턴스 변수가 놓이는 메모리 영역

가비지 컬렉터에 의해 관린된다.

가비지 컬렉터가 메모리를 해제하기 전까진 계속 유지된다.


 3) Method Area (메서드 영역)

클래스의 코드가 로딩되는 메모리 영역

메서드 코드가 이 영역에 존재한다. 


* JVM이 종료되면 JVM이 사용한 모든 메모리는 OS에 자동으로 반납된다.

  - OS의 메모리 관리 정책에 따라 프로세스가 종료되면 그 프로세스가 사용한 모든 

    메모리를 강제로 해제시킨다.

블로그 이미지

필로그래머

,