JVM 이란?

Moseoh·2022년 7월 17일
0

Java

목록 보기
1/1
post-thumbnail

서론

c/c++ 는 Compile Platform 과 Target Platform이 다를 경우, 프로그램이 동작하지 않는다.

Cross Compile

Target Platform에 맞춰 Compile을 하는 것.

JVM

Java bytecode는 Target Platform에 상관 없이 JVM 위에서 동작한다.

JVM은 Target Platform에 의존한다. (Windows용 JVM 등)

WORA

Write Once, Run Anywhere

Java Code를 Compile 해서 배포한다면, 어떤 Platfrom 이든 다시 Compile 할 필요 없이 실행 시킬 수 있다. 다만 실행하려면 그 플랫폼에 맞는 JVM이 설치되어 있어야 한다.

굳이 JVM 인가?

자바는 네트워크에 연결된 모든 Device에서 작동하는 것이 목적이었다.

Device 마다 운영체제나 하드웨어가 다르기 때문에, 자연스럽게 Platform에 의존하지 않도록 언어를 설계하였고 그 결과가 Java Bytecode, JVM

Per JVM

아래 사진을 참조.

  1. Compile

    Java Source 를 Compiler를 통해 Java Bytecode로 변환시킨다.

  2. Run

    Java Bytecode를 JVM 환경에서 구동 시킨다.

빨간색 영역 ⇒ 모든 Thread가 공유

  • Method Area Class Loader 가 Class 파일을 읽어오면, Class 정보를 parsing 해서 Method Area 에 저장
  • Heap 프로그램을 실행하면서 생성한 모든 객체를 Heap 에 저장

파란색 영역 ⇒ Thread 마다 존재

  • Pc Registers pc registers 의 각 thread 는 method 를 실행하고 있고, pc 는 그 method 안에서 몇 번째 줄을 실행해야 하는 지 나타내는 역할
  • Java Stacks java stack 은 thread 별로 1개만 존재하고, stack frame 은 method 가 호출될 때마다 생성된다.
    mothod 실행이 끝나면 stack frame 은 pop 되어 stack 에서 제거된다.
    • Stack Frame
      • Stack Frame 은 Method 가 호출될 때마다 새로 생겨 Stack 에 Push 된다.
      • Stack Frame 은 Local Variables
  • Native Method Stacks

출처

https://www.youtube.com/watch?v=UzaGOXKVhwU

https://velog.io/@harang/스터디-1주차-정리-Java의-실행-모델-Java의-Compile-and-Run

profile
슬기로운 탐구생활

0개의 댓글

관련 채용 정보