JVM의 java 파일 실행

KangHo Lee's avatar
Nov 13, 2024
JVM의 java 파일 실행

1. JDK (Java Development Kit)

  • 자바 애플리케이션 개발을 위한 도구 모음
  • 구성
    • 컴파일러(Java c)
    • JRE(Java Runtime Environment, 자바 실행 환경)
      • 라이브러리
      • JVM(Java Virtual Machine)
💡
자바 실행만 할 경우 JRE만 있어도 됩니다.

2. java 파일 실행 흐름

  1. 개발자는 IDE에서 개발자가 이해 가능한 언어로 코드를 작성해서 java 파일을 만듭니다.
  1. HDD에서 java 파일을 메모리로 로드합니다.
  1. 컴파일러가 java파일을 읽고 바이트코드로 컴파일하고 class 파일로 저장합니다.
  1. JVM이 class파일을 읽고 메모리(RAM)에 영역을 할당(assign)합니다.
  1. 코드가 순차적으로 실행됩니다.

3. 메모리에 할당되는 영역의 종류

Static 메모리

💡
  • 프로그램이 시작될 때 메모리에 로드
  • 프로그램이 종료될 때 메모리에서 삭제
  • 가장 긴 생명 주기→ 프로그램 전역에 공유
  • static이 변수 선언에 사용되는 경우 변수는 Static메모리에 저장

Heap 메모리

💡
  • 동적 데이터(동적으로 할당된 객체, 배열) 등이 저장
  • new 로 새 인스턴스를 생성 시 객체의 정보를 Heap메모리에 저장

Stack 메모리

💡
  • 함수 호출과 관련된 지역 변수와 매개변수 등이 저장

4. 소스 코드 예시

notion image
  1. Static 영역에 저장되는 정보
      • num2 = 2 (line 4)
      • main 메서드 (line 12)
  1. Heap 영역에 저장되는 정보
      • line 15가 실행되면서 JVMTest 객체 내용이 할당된 주소에 저장
        • num1 =1 (line 3)
        • method1 (line 6)
  1. Stack 영역에 저장되는 정보
      • line 15가 실행되면서 참조 변수 jt가 참조하는 heap메모리의 주소 정보가 main stack에 저장됩니다.
      • line 17이 실행되면서 method1에 대한 정보가 method1 stack에 저장됩니다.
        • 매개변수 num3 = 3
        • num4 = 4
      💡
      1. jt.method1(3); 이 실행
      1. main stack에 저장된 method1의 heap메모리의 주소 정보를 확인
      1. 해당 주소의 heap 메모리로 찾아가서 method1의 정보를 가져와서 실행
      → 2번의 과정이 필요
  1. 코드의 마지막 줄이 실행된 후
      • method1 스택 삭제
      • main 스택 삭제
      • static 메모리 삭제
      • 프로그램 종료
 
Share article

devleekangho