ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JAVA - JVM
    CS/Java 2021. 2. 17. 20:15

    JVM


    JVM(Java virtual machine)

    • 자바 소스코드로 부터 만들어지는 자바 바이너리 파일(.class)을 실행할 수 있다.

    • 바이너리 코드를 읽고, 검증하고 실행하며 실행 환경의 규격을 제공한다.

     

    구조

    1. Class Loader
      • 자바 파일(.java)이 생성되면 자바 컴파일러가(javac) 컴파일하여 바이트코드(.class)로 변환해 준다.
      • 이때 이러한 class파일들을 모아서 JVM이 OS로부터 할당받은 메모리 영역인 Runtime data area로 적재하는 역할을 한다.
    2. Execution Engine
      • class loader에 의해 메모리에 적재된 클래스(바이트코드)들을 기계어로 변경해 명령어 단위로 실행한다.
    3. Garbage Collctor
      • Heap 메모리 영역에 생성된 객체들 중에 참조되지 않은 객체들을 제거한다.
    4. Runtime Data Area
      • JVM의 메모리 영역으로 자바 애플리케이션 실행시 사용되는 데이터를 적재하는 영역이다.
      • 5가지 영역으로 구분된다.
        1. Method영역: 클래스 멤버 변수, 메소드 정보, type, static, final변수 등이 저장된다.
        2. Heap 영역: new 키워드로 생성되는 객체와 배열이 저장되는 영역. 
        3. Stack 영역: 지역변수, 파라미터, 리턴 값, 연산에 사용되는 임시 값 등을 저장하는 영역.
        4. PC Register 영역: 쓰레드가 실행되는 부분의 주소와 명령을 저장하는 영역.
        5. Native Method Stack 영역: 자바 외 언어로 작성된 네이티브 코드를 위한 메모리 영역이다. 

     

    reference

    velog.io/@hono2030/JVM%EC%9D%98-%EA%B5%AC%EC%A1%B0

    velog.io/@hygoogi/%EA%B8%B0%EC%88%A0-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8-%EB%AA%A8%EC%9D%8C#java

    velog.io/@litien/JVM-%EA%B5%AC%EC%A1%B0

    'CS > Java' 카테고리의 다른 글

    JAVA - 오버로딩, 오버라이딩  (0) 2021.02.18
    JAVA - 인터페이스와 추상클래스  (0) 2021.02.18
    JAVA - GC  (0) 2021.02.18
    JAVA - 접근 제어자  (0) 2021.02.17
    JAVA - 객체지향  (0) 2021.02.17

    댓글

Designed by Tistory.