Computer Science/Computer Structure

[JAVA] JVM 런타임 영역 동작

아란정 2025. 4. 15. 13:39
728x90
반응형

OS는 실행 중인 프로그램을 프로세스 단위로 관리한다. 자바 프로그램을 시작하면 JVM 프로세스가 생성된다. 이 프로세스가 main() 메소드를 호출한다. 

JVM은 운영체제에서 할당 받은 메모리 영역을 메소드 영역, 힙 영역, 스택 영역으로 구분해서 사용한다.

  • 메소드 영역: 바이트코드 파일을 읽은 내용이 저장되는 영역
  • 스택 영역: 메소드를 호출할 때마다 생성되는 프레임이 저장되는 영역
  • 힙 영역: 객체가 생성되는 영역. 객체 주소는 메소드 영역과 스택 영역의 상수와 변수에서 참조한다. 

 

JVM → 클래스 로드 → main() 찾아 실행

근데 main()은 아직 객체가 없기 때문에 클래스 이름만으로 호출하기 위해 메소드 영역(static)에 올라가서 클래스 로딩 시 바로 준비된다. 

public static void main(String[] args)
  • static 영역과 메소드 영역이 동일한 부분이다. 

 

더보기

String[] args : 터미널에서 'java sum 220 10' 으로 프로그램을 실행하려고 할 때 아규먼트를 받기 위해서 String[] args를 넣어준다.

728x90