main 메서드 동작 방식

public class Start {
    public static void main(String[] args) {
        System.out.println("Hello World!   ");
    }
}

1. 스태틱 영역의 역할

  • 스태틱 영역
    • 프로그램의 실행 동안 변경되지 않고 유지되는 영역
      • 클래스의 메타데이터
      • 스태틱 변수
      • 스태틱 메서드 등이 로드됨

2. Main 메서드 실행 방식

  1. 전처리 과정
    1. 초기 메모리 공간
    1. JVM 이 java.lang 패키지를 스태틱 영역에 배치함.
    1. 임포트 패키지와 모든 클래스 메타데이터를 스태틱 영역에 배치
  1. main 문 실행시
    1. main 메서드를 위한 스택 프레임이 스택 영역에 할당
      • 클래스 정의를 시작하는 여는 중괄호를 제외하고, 중괄호를 만날 때마다 스택 프레임이 하나 씩 생기게 된다.
    1. main 메서드 인자 args 를 저장할 변수 공간을 main 메서드의 스택 프레임의 가장 아래에 할당한다.

  1. 코드의 실행
    sop ("Hello ~ ) 수행
    • 별도 코드 실행 영역이 따로 존재한다.
    • T 메모리상에서는 이러한 단순 코드의 실행은 고려하지 않는다.
  1. 스택 프레임의 소멸
    • main 메서드의 닫는 중괄호를 만나게 된다면 스택 프레임이 소멸한다.
  1. main 메서드의 종료
    • main 메서드가 종료되면 JRE 는 JVM을 종료하고
    • JRE 자체도 OS 메모리에서 소멸

Uploaded by N2T