본문 바로가기
Algorithm

Java의 일꾼 'JVM'

by Davidev 2021. 9. 3.
반응형

 

 

오늘은 이름과 역할만 알고 있던 'JVM'에 대해 좀 더 자세하게 알아보는 시간을 가졌다.

 

 


 

 

<자바 가상 머신(JVM)>

 

 

 

  • 추상적인 장치, 클래스파일을 기계어로 번역해준다.

 

 

  • [클래스 영역], [힙 영역], [자바 스택 영역], [네이티브 메소드 스택 영역]으로 구성되어 있다.

 

 

  • [클래스 영역] : 실행에 필요한 클래스들을 로드하여 저장하는 공간이다.
    메소드는 메소드 영역에, 상수는 상수 영역에 저장된다. 모든 thread가 이 영역의 자원을 사용할 수 있다.

 

 

  • [힙 영역] : 객체 또는 배열을 생성할 때 동적으로 공간을 할당해 객체를 저장하는 공간.
    사용되지 않는 객체는 Garbage Collector가 자동으로 체크해 삭제하는 위치이다.

 

 

  • [자바 스택 영역] : 자바 프로그램이 동작하면서 실행되는 함수의 정보가 저장되는 공간.
    함수 호출시 함수별로 자원이 들어있는 Frame을 생성, 함수 종료시 삭제된다.
    스택 영역은 Thread마다 별도로 생성된다. (Thread가 1개일 때 1개, 2개일 때 2개의 stack 생성)

 

 

  • [네이티브 메소드 스택 영역] : 자바에는 하드웨어를 직접 제어하는 기능이 없지만 하드웨어를 직접 제어가 필요한 경우, Native Method들이 바이트코드로 변환되면서 사용되고 기록하는 영역이라고 한다. (직접 제어기능이 없으므로, C 언어와 같은 다른 언어의 기능을 잠시 빌려 사용해야 하는데, 이 때 사용하는 것이 JNI(Java Native Interface) 기술이다.)           
  •  
  •                   

'이것이 자바다'(한빛미디어) 유튜브 강의 참조자료

 


 

 

 

 

책과 유튜브 강의를 통해 학습한 내용을 나름대로 요약 정리해보았다.

버추얼 머신이 보이지 않는 곳에서 무슨 일을 하는지 알게 되었다.

 

 

 

 

 

1. Java에서 프로그램이 실행되면 Java Virtual Muchine코드분석한다.

 

   1-1) 프로그램 언어 -> 컴퓨터 언어로 번역해주는 역할. 

   1-2) OS로부터 메모리를 할당받는다.

 

 

 

 

2. JVM은 분석한 코드를 [클래스 영역][힙 영역]생성하고 자원별로 분류해서 저장해 둔다.

 

   2-1) [클래스 영역]은 모든 클래스의 필드 / 멤버필드 / 생성자 / 메소드 등을 각각 분류해 저장한다.

   2-2) [클래스 영역]은 마치 Github처럼 모든 Thread가 오픈소스를 공유할 수 있는 영역이다.

   2-3) [힙 영역]은 객체배열(객체 취급in Java)이 생성되는 영역이다.

   2-4) [힙 영역]은 Garbage Collector가 특별 관리를 해준다. (사용되지 않는 객체들을 삭제 / C언어는 G.C가 없다.)

 

 

 

 

3. 프로그램의 메서드가 실행될 경우 별도의 [스택 영역]이 생성되어 내부에 메서드 정보가 쌓인다.

 

   3-1) 프로그램 내 Thread마다 별도의 [스택 영역]이 생성된다.

   3-2) 메서드가 실행되고 종료됨에 따라 자동으로 스택이 생성되고 삭제된다.

 

 

 

 

 

반응형

댓글