ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2022_07_29 JVM 이란?
    태투'S/SIL 2022. 7. 29. 19:54

    Answer :

    Java Virtual Machine의 약자로, 자바를 실행하기 위한 소프트웨어로 구현된 컴퓨터, 가상기계를 말한다. 자바로 작성된 어플리케이션을 실행시키기 위해 반드시 필요하다. JVM을 사용하면 운영체제에 상관없이 같은 코드를 사용할 수 있습니다.

    (자바 소스 코드로 작성되어 있는 자바파일을 클래스 바이트 코드로 변환하여 각각의 운영체제에 맞게 실행 시킴)

     

    1. JVM의 메모리 구조

    1-1. 메서드 영역

    프로그램 실행중 어떤 클래스가 사용되면, JVM은 해당 클래스의 클래스 파일을 읽어서 분석하여 클래스에 대한 정보와 그 클래스의 변수를 이곳에 저장한다.

     

    1-2. 힙 영역

    인스턴스가 생성되는 공간이다. 프로그램 실행 중 생성되는 인스턴스들이 모두 여기에 저장된다. 즉, 인스턴스 변수들이 생성되는 공간이다.

     

    1-3. 호출스택

    호출스택은 메서드의 작업에 필요한 메모리 공간을 제공한다. 메서드가 호출되면, 호출스택에 호출된 메서드를 위한 메모리가 할당되며, 이 메모리는 메서드가 작업을 수행하는 동안 지역변수(매개변수 포함)들과 연산의 중간결과 등을 저장하는데 사용되며, 메서드가 작업을 마치면 할당되었던 메모리공간은 반환되어 지워진다. 스택의 작동원리처럼 맨 위의 메서드가 현재 실행되는 메서드이며, 맨 위의 메서드가 완료된 후 메모리를 반납하고 그 밑에 있는 메서드가 실행이 된다. 당연히 아래에 있는 메서드가 위에 있는 메서드를 호출한 메서드이다.

     

    2. JVM 동작 과정

    1. 프로그램이 실행되면 JVM은 OS로부터 메모리를 할당받는다. 위에 언급했던 메모리 구조에 따라 영역을 나누어 관리한다.
    2. 자바컴파일러가 자바 소스코드를 읽어들어 자바 바이트코드(.class)로 변환시킨다.
    3. Class Loader를 통해 class파일들을 JVM으로 로딩한다.
    4. 로딩된 class파일들은 Execution engine을 통해 해석된다.
    5. 해석된 바이트코드는 Runtime Data Area에 배치되어 실질적인 수행이 이루어지게 된다. 
    6. 위의 실행과정 속에서 JVM은 필요에 따라 Thread Synchronization, GC같은 관리 작업을 수행한다.

    댓글

Designed by Tistory.