Skip to content

강승훈, 이지표, 조희승, 지찬우 JVM

huiseung edited this page Jul 10, 2024 · 4 revisions

사전 확인 질문 답변

1. Hello World가 출력되는 과정

  1. class 파일을 classloader 메모리에 올린다
  2. excution engine 이 public static main 메서드 부터 명령어를 수행
  3. System.out.println (PrintStream) 메서드 호출 → BufferedOutputStream.flush → FileOutputStream. write
  4. FileOutputStream write() 에서 native code인 writeBytes() 호출
  5. 시스템콜이 표준 출력 파일에 내용을 쓴다.
Screenshot 2024-07-10 at 1 18 14 PM Screenshot 2024-07-10 at 1 19 43 PM

2. Java 컴파일 과정

  • 정적 컴파일러: 실행전 기계어로 변환하는 컴파일러
  • 동적 컴파일러(인터프리터): 실행중 기계어로 변환하는 컴파일러
  • 자바는 컴파일러와 인터프리터 모두 해당
  1. javac 가 java 파일을 class(bytecode) 파일로 변환

Class Loader

  • Loading
    • 클래스 사용 시점에 로딩(동적 로딩)
      • Bootstrap ClassLoader
      • Extension CalssLoader
      • Application Class Loader
        • 클래스패스에서 클래스들을 찾아 Class 객체를 만들어 메모리에 로딩
  • Linking
    • verify
      • 클래스 파일의 이상 판단
    • prepare
      • field 자료형에 기본값 메모리에 적재
    • resolve
      • field 에 초기화한 값 할당
  • Initialization
    • static 블록 호출
Untitled

Runtime Data Area

Untitled
  • method area
    • 각종 class, interface 정보(constructor, method, field)
    • static
    • constant pool
  • heap area
    • 인스턴스 적재 영역, method area를 가리킴(인스턴스 생성 때마다 클래스 정보를 적재하지 않아도 된다)
  • stack area
    • method call
  • pc register
    • 다음 실행할 명령어 위치한 주소
  • native method stack

Interpreter

한 줄 씩 assembly 언어로 변환

JIT

  • JVM은 코드 실행을 모니터링해 호출 횟수, 실행 시간, 메모리 사용량을 추적
  • C1 compiler: 어떤 메서드의 호출이 특정 기준을 만족하면 byte 코드를 기계어로 컴파일
  • C2 compiler: c1으로 컴파일한 코드의 호출이 특정 기준을 만족하면 컴파일 시간은 더 오래 걸리지만 실행 속도가 더 빠르게 최적화 하는 컴파일러
    Untitled 출처: https://www.baeldung.com/jvm-tiered-compilation

Garbage Collection

Minoer GC

young area

Major GC

old area

JVM 아키텍처

Screenshot 2024-07-10 at 1 04 51 PM

JDK, JRE

  • jdk, java development kit
    • 자바 개발하기 위한 도구
    • jre + 개발도구(컴파일러, 디버거, 등)
  • jre, java runtime environment
    • 자바 프로그램을 실행하기 위한 환경
    • JVM과 자바 클래스 라이브러리로 구성

👼 개인 활동을 기록합시다.

개인 활동 페이지

🧑‍🧑‍🧒‍🧒 그룹 활동을 기록합시다.

그룹 활동 페이지

🎤 미니 세미나

미니 세미나

🤔 기술 블로그 활동

기술 블로그 활동

📚 도서를 추천해주세요

추천 도서 목록

🎸 기타

기타 유용한 학습 링크

Clone this wiki locally