Java 기초 정리 - JVM 메모리 영역

Zyoon·2025년 4월 14일

Java 기초정리

목록 보기
9/24
post-thumbnail

💡 Method, Stack, Heap


JVM 메모리 구조


  1. Method 영역

    • 클래스 정보 저장 공간
    • JVM 시작 시 생성되어 모든 스레드가 공유하는 공간
    • 클래스 이름, 필드 및 메서드 정보, static 변수, 컴파일된 코드 등이 저장됨
    • 마치 도서관에 꽃혀있는 책들과 같은 형태
  2. Stack 영역

    • 스레드마다 따로 할당되는 공간
    • 메서드 호출과 지역 변수, 임시 데이터 등을 저장
    • 메서드 호출 시 사용되고, 종료 시 제거
    • 후입선출의 구조 (LIFO - Last In First Out)
    • 접시 쌓기로 비유 - 접시를 쌓고 위에 있는 접시를 먼저 꺼내는 구조
  3. Heap 영역

    • new 키워드로 생성된 객체와 배열의 실제 데이터가 저장되는 곳
    • 모든 스레드가 공유하는 공간
    • CG(Garbage Collector)의 관리 대상
    • 메모리 크기가 크고 동적으로 할당
  4. JVM 영역 예제 코드

    public class MemoryExample {
        static int staticVar = 100; // static 변수 (Method Area)
    
        int instanceVar = 200;      // 인스턴스 변수 (Heap Area)
    
        public static void main(String[] args) {
            int localVar = 300; // 지역 변수 (Stack Area)
    
            MemoryExample obj = new MemoryExample(); // 객체 (Heap Area)
            obj.instanceMethod(localVar);
        }
    
        void instanceMethod(int param) {
            int localVar2 = param + 50; // 지역 변수 (Stack Area)
            System.out.println("localVar2: " + localVar2);
        }
    }
profile
기어 올라가는 개발

0개의 댓글