관리 메뉴

CASSIE'S BLOG

[슈퍼코딩] 40강 JVM 메모리 구조 본문

PROGRAMMING/슈퍼코딩 강의 정리

[슈퍼코딩] 40강 JVM 메모리 구조

ITSCASSIE1107 2023. 12. 14. 15:43
반응형

자바는 두가지 시점이 중요하다.

컴파일 시점과 런타임 시점

Java는 어떤 방식으로 JVM위에서 돌아가고있는지 이해할 수 있다.

하울의 움직이는 성에서 불꽃이 그 성을 움직이는 원동력이라는데?

자바 소스코드 -> Byte Code
Byte Code가 010101은 아니지만 자바 소그코드와 010101 의 딱 중간이라고 함

그 바이트 코드가 JVM위에서 돌아가는 거임

JVM은 크게 3가지로 나뉨
1. Runtime Data Area
2. Class Loader
3. Execution Engine (실행엔진)

Class Loader: 호출에 대한 동작을 함

Execution Engine: 실행에 대한 동작

Runtime Data Area: 저장에 대한 동작

Ram에서 CPU돌아가는 것도 cpu가 ram에
저장하고 다시 ram에 있는걸 꺼내서 다시 계산하고 저장하고 이게 계속 반복이 되는 거잖아요?

자바도 사실 다 비슷한 원리다.

자바를 빌드하게 되면 out파일이 생긴다.
그러면 .class 파일이 생긴다.

그러면 Class Loader가

Loading -> Linking -> initialization 작업을 거치고 나서
Runtime Data Area로 가게된다.

JAVA JVM 클래스 로더 파헤쳐보기

Loading (로드): 클래스 파일을 가져와서 JVM메모리에 로드한다.


Linking (링크): 클래스 파일을 사용하기 위해 검증하는 과정이다.

클래스 변수들이 필요하다면 어떤 값들로 적절하게 초기화한다 (즉 int 같은 경우에는 0으로 초기화하고 String 같은 경우에는 null로 초기화한다. 이 뜻임)



Execution Engine:
인터프리터: 동시 통역
J IT 컴파일러: 반복문장 메모

 

 

 

가비지 컬렉터: 

필요없는 데이터들을 수집해서 버리는 역할을 하는데 이게 중요하다고 함. 

 

 

Modify Operation > Add VM options

 

ppt 명령어 그대로 복사하기

-Xlog:class+init

 

 

 

class Loader의 초기화를 볼 수 있는 옵션을 줘서 실행을 해보는거라고 함. 

 

그러면 initializing 이라고 해서 되게 많이 뜬다.

 

 

그 다음 main 함수 실행하면 
저희가 딱히 정의하지 않았어도
자바가 어떤 어플리케이션 실행하든지 
기본적으로 실행을 하게되는 
표준 api가 있다.  빌트인 클래스라고도 한다.

 

 

내가 정의한 클래스들을 확인하기 위해서는 exercise 키워드로 검색하면 된다고함. 

반응형