JAVA

JAVA 기초공부 - JVM

라구엘 2023. 2. 19. 19:35

사유 : 공부 개발을 하면서 JAVA 실행이 어떻게 되는지는 대략적으로 알고 있었으나

어떻게 돌아가는지, 어떤식으로 구성이 되어있는지 자세하게 설명을 하지 못하여 다시 공부하고자 한다.

 

 - JVM 이란?

   -> Java Virture Machine 뜻함

 

 - JVM 특징

   -> JVM을 사용하기 위해선 JDK안에 있는 JRE설치 필요

   -> OS 위에서 독립적으로 운영되기 때문에 OS애 영향을 받지않음 ex) window, mac, linux 등

 

 - 실행 순서

   1. Class Loader는 동적 로딩을 통해 필요한 클래스들을 로딩 및 링크 하여 Runtime Data Area에 업로드  JVM의 메모리에 올린다..

   2. Runtime Data Area에 업로드 된 Byte Code는 Execution Engine을 통해 해석된다.

   3. Execution Engine에 의해 Garbage Collector의 작동과 Thread 동기화가 이루어진다.

 

 - Class Loader 

  1. 로드 - 클래스 파일을 가져와서 JVM의 메모리에 로드한다.
  2. 검증 - 자바 언어 명세( Java Language Specification ) 및 JVM 명세에 명시된 대로 구성되어 있는지 검사한다.
  3. 준비 - 클래스가 필요로 하는 메모리를 할당( 필드, 메서드, 인터페이스 등등 )
  4. 분석 - 클래스의 상수 풀 내 모든 심볼릭 레퍼런스를 다이렉트 레퍼런스로 변경한다.
  5. 초기화 - 클래스 변수들은 적절한 값으로 초기화한다. ( static 필드 )

 - Runtime Data Area

   -> JVM이 프로그램을 수행하기 위해 OS로부터 할당받는 메모리 영역

 

   1. 

 

 

 - Excution Engine

  1. 인터프리터 - 바이트 코드 명령어를 하나씩 읽어서 해석하고 실행한다. 하나하나의 실행은 빠르나, 전체적인 실행 속도가 느리다는 단점을 가짐
  2. JIT 컴파일러 ( Just-In-Time Compiler ) - 인터프리터의 단점을 보완하기 위해 도입된 방식. 바이트코드 전체를 컴파일하여 바이너리 코드로 변경하고 이후에는 해당 메서드를 더 이상 인터프리팅 하지 않고, 바이너리 코드로 직접 실행하는 방식이다. 하나씩 인터프리팅하여 실행하는 것이 아니라 바이트 코드 전체가 컴파일된 바이너리 코드를 실행하는 것이기 때문에 전체적인 실행속도는 인터프리팅 방식보다 빠르다.

 

 

# 참고 문헌

- https://inpa.tistory.com/entry/JAVA-%E2%98%95-JVM-%EB%82%B4%EB%B6%80-%EA%B5%AC%EC%A1%B0-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%98%81%EC%97%AD-%EC%8B%AC%ED%99%94%ED%8E%B8

 

[JAVA] ☕ JVM 내부 구조 & 메모리 영역 자세히 정리

저번 포스팅에서는 JRE / JDK / JVM에 대해서 간략하게 알아보는 시간을 가졌다면, 이번 포스팅에서는 JVM의 내부 구조에 대해 좀 더 자세하게 알아보도록 할 예정이다. JVM(자바 가상 머신)은 자바 언

inpa.tistory.com

- https://velog.io/@chiveloper/1%EC%9E%A5.-JVM%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EA%B3%A0-%EC%9E%90%EB%B0%94%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%8B%A4%ED%96%89%EB%90%98%EB%8A%94%EA%B0%80

 

1장. JVM은 무엇이고 자바는 어떻게 실행되는가?

출처 : https://github.com/whiteship/live-study/issues/1 목표 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기. 학습할 것 JVM이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 무엇인가 [JI

velog.io

- https://tecoble.techcourse.co.kr/post/2021-08-09-jvm-memory/

 

JVM에 관하여 - Part 3, Run-Time Data Area

Java 로 작성된 코드는 어떻게 돌아가는 걸까? 해당 물음에 답을 찾기 위한 JVM 시리즈 3편, JVM 의 구성요소 중 Run-Time Data Area 에 관한 글입니다. 이번 글에서는 JVM…

tecoble.techcourse.co.kr

 

'JAVA' 카테고리의 다른 글

JAVA 버전 변경 안될 때  (0) 2022.12.16