kotlin입문~! JVM언어란?

kkikki·2024년 9월 24일

코틀린이라는 간결한 JVM 언어를 익힘으로써
개발 트렌드에 맞는 개발 실력을 얻을 수 있다

JVM 언어란?

컴퓨터가 이해할 수 있는 형태로 번역하는 것은 JVM이 담당해야 합니다.
그럼 우리는 JVM이 이해할 수 있는 형태로 번역을 해서 줘야 합니다.
이때 JVM이 이해할 수 있는 형태가 바이트 코드입니다. 
자바에서 javac 명령을 통해 컴파일을 하면 .class 확장자를 갖는 바이트코드가 만들어지고, JVM이 바이트코드를 실행

JVM 구성요소

JVM은 크게 4가지 구성 요소를 가집니다.
1. Class Loader
2. GC (Garbage Collector)
3. Execution Engine
4. Runtime Data Area

  1. Class Loader
    -  JRE의 일부로, 바이트코드를 실행할 때 class 객체를 메모리에 생성하는 요소이다.
    클래스의 인스턴스를 생성하면 Class Loader를 통해 메모리에 로드한다.

  2. GC(Garbage Collector)

  • 자바는 메모리 관리를 사용자가 아닌 JVM이 알아서 해줍니다.
    GC는 더 이상 참조되지 않는 메모리를 정리해줍니다.
    GC가 언제 호출되는지는 알 수 없으며, 심지어 사용자가 호출하더라도 메모리 정리할 필요가 없다고 판단하면 
    실행하지 않습니다.
  1. Execution Engine
  • 메모리에 로드 된 바이트 코드를 실행하는 역할을 합니다.
    Class Loader를 통해 Runtime Data Area에 배치된 바이트코드는 Execution Engine에 의해 실행 됩니다.
    이넡프리터 방식이나 JIT 방식으로 실행합니다.
  1. Runtime Data Area
  • JVM의 메모리 영역입니다.
    크게 4가지 영역으로 구분할 수 있습니다.
    a. 클래스 영역
    - 실행에 필요한 클래스들을 로드하여 저장합니다. 내부에서 메소드 영역과 상수 영역으로 또 나뉘어 저장됩니다.
    b. 가비지 컬렉션 힙 영역
    - GC에 의해 관리되는 영역입니다. 동적 메모리 할당 영역이라고도 하며, 소스 상에서 new 연산자로 객체를 
    만들 때 할당되는 영역입니다.
    c. 런타임 스택 영역
    - 프로그램 실행 중 발생하는 메소드 호출과 복귀에 대한 정보를 저장합니다.
    d. 네이티브 메소드 스택 영역
    - 자바에는 하드웨어를 직접 제어하는 기능이 없기 때문에 필요한 경우 c언어와 같은 다른 언어의 기능을 빌려
    사용합니다. 이때 사용하는 기술이 JNI(Java Native Interface) 기술로 네이티브 메소드들이 마이트 코드로
    되면서 사용되고 기록하는 영역입니다.
profile
내 커리어 끝은 없다

0개의 댓글