머리가 나빠서 분명히 배우고 이해했음에도 누군가 물어보면 머뭇머뭇 퓨ㅠㅠㅠ


정리해놓고 충분히 계속 인지하고 있어야 겠다.


먼저


◆JVM



java virtual machine의 약자이다. 직독 하자면 '자바가상머신' 자바의 큰 특징 중 하나다.


자바는 운영체제에 의존적이다. 즉, 윈도우 jvm과 유닉스 jvm이 다르다는 것이다. 그렇다면 윈도우에서 만든 자바 파일은 유닉스 혹은 리눅스에서는 쓰지 못하는 것일까?


그걸 가능케 하는 것이 jvm의 역할이다. 한번 컴파일된 코드는 서로 다른 jvm이더라도 돌아가도록 설계가 되어있다. ( 플랫폼 독립적)


jvm 열일한다. 그뤠잇~


본격적으로 JVM구조에 대하여 알아보도록 하자.


(출처 : https://ko.wikipedia.org/wiki/자바_가상_머신)



JVM은 크게 3가지로 나뉘어 진다.


1) Class loader

먼저 Class loader란 런타임시점(실행)에서 클래스파일을 로딩(메모리에 적재)하도록 도와준다.


2) Runtime Data Access

메모리에 관련된 부분으로서 위에서 메모리에 적재를 받은 공간안에


-PC 레지스터

-Stack 영역

-Method 영역

-heap 영역

-네이티브 메소드 스택


5개의 영역으로  나뉜다.


3) Execution Engine


위에 2개가 적재를 담당한다면 본격적으로 실행을 도와주는 친구이다.


Class Loader -> 메모리 적재

Runtime Data Areas -> 각 영역 관리

Execution Engine -> 자바 바이트 코드 읽고 실행




◆JRE


(java runtime enviroment) = 자바 실행 환경


위에 JVM에서 실행을 할 때 필요한 라이브러리 파일들과 기타 파일들을 가지고 있다. 


◆JDK


java development kit


jre외에 개발을 위해 필요한 도구들을 가지고 있다. 


이 부분이 컴파일러를 들고 있고 자바 코드를 클래스 파일로 만들어 준다.



출처 :

jvm - https://medium.com/@lazysoul/jvm-%EC%9D%B4%EB%9E%80-c142b01571f2

jvm,jre,jdk : https://wikidocs.net/257



+ Recent posts