jvm 메모리

  • jvm에서 메모리 영역인 런타임 데이터 영역의 구조를 그림으로 그리면 다음과 같다.

  • 크게 3부분으로 나눠진다.
    1. 메소드 영역(클래스 영역)

    • 필드나 메서드의 메타데이터 저장
    • static 변수, 메소드 저장
    • 바이트 코드 저장
    • 상수 풀(Constant Pool)

    2. 스택 영역

    • Last In First Out(LIFO)
    • 메서드 호출 시마다 각각의 프레임 생성
    • 메서드 안에서 사용되어지는 값들을 저장
    • 호출된 메서드의 매개변수, 지역변수, 리턴 값 및 연산 시 일어나는 값들을 임시로 저장
      메서드 수행이 끝나면 프레임별로 삭제

    3. 힙 영역

    • new 연산자로 생성된 객체와 배열을 저장하는 공간
    • 클래스 영역에 로드된 클래스만 생성가능
    • GC를 통해 메모리 반환