*Youtube Link - https://www.youtube.com/watch?v=_23I6qDmCi4
1. 책
JVM은 C++ 코드입니다.
JVM 자체가 Native Code로 만들어집니다.
그래서 C++로 개발이 되었습니다.
Java는 C++
C++은 Pointer라는 Native를 갖고 있다. (RAM의 물리적 주소이다.)
그래서 참조형을 사용하면 물리 RAM에 직접 접근하는 것이다.
2. JVM 에 대한 추가 설명
"Microsoft processor specific -> Interface -> C, C++ -> COMPILER -> Assembly Language -> Assembler -> Machine Code"
"JAVA -> [Virtual Machine] -> Native codes -> Platform (os -> Micro pro processor -> Platform (AMD, ex)Intel))"
"Native codes -> Machine code"
C언어 및 C++언어는 Native codes이다.
마이크로소프트 프로세서가 있고, 그에 대한 인터페이스를 기반으로 C, C++로 코딩을 한다.
그에 반해 JAVA는 Virtual Machine이라는 것이 있어서 이러한 인터페이스 기능을 대신해준다.
JAVA의 Virtual Machine은 C++언어로 되어있다.
그리고 각 OS(AMD, 예로 Intel)로 맞는 Microsoft pro processor에 맞도록 된다.
그래서 os를 먼저 읽고, Native codes로 만들어진다.
그러면 이 Native codes가 Complier를 거쳐서 Assembly Language가 되고
Assembler를 통해서 Machine Code가 만들어진다.
"Native codes has a knowledge to convert for any Platform."
"C, C++ are example of basic native codes."
C, C++언어는 Native codes이다. 그래서 어떤 플랫폼도 맞도록 Complie될 수 있도록 한다.
Complier가 이를 가능하게 한다.
Hotspot JVM -> 힙에 어떻게 저장되는지
스택은 어떤지
3. Java Application의 구조
예를 들어서 GC 같은 경우 어떤 것을 사용해서 무엇을 했냐
JVM의 메모리 파티션 조정이 있다. 지연성이 올라가지 않으려면 어떻게 해야 하는가
Native codes에서 어떻게 바뀌어지고
Java의 경우 모든 클래스들이 Object 클래스의 파생이죠.
이 수준에서 논해지는 hash의 개념
JVM 디버그 수준에서 논하는 ID값 (테이블에서 이루어지는 과정)
객체를 어떻게 하는가
JVM (C++) -> Assembly(바이트 코드)
이 과정이 어떻게 이루어지는지
C++ 수준에서 보아야 한다.
바이트 코드 실행 엔진
-> 런타인 스택 프레임 구조
-> 스택 기반 바이트코드 해석 및 실행 엔진
컴파일과 최적화
컴파일러에 대한 지식이 있이 봐야 한다.
나중에 스레드 및 동시성에 대해 알아야 한다.
실행의 단위는 Thread이다.
K 수준의 Thread, Application Thread와 1:1 매핑이 된다.
스레드로 넘어가면 락 이야기가 나온다.
최적화에 대한 이야기가 나온다.
JVM 최적화에 대한 이야기이다.
여기서 C, C++ 언어를 알게 되면
기계어까지 가게 된다.
그런 관점에서 구조론을 논하다 보니 데이터베이스 현상에 대해서 논할 수 있다.
2차 메모리 같은 Disk에서 무언가가 걸어진다.
JVM으로 이어지면 컴파일러에 대해 이해를 해야 한다.
전공자의 기본기 이 다섯가지를 다 공부하고
보실 것을 추천을 드립니다.
감사합니다.
'JAVA 공부' 카테고리의 다른 글
[Youtube review] 가비지 컬렉터가 뭐하는 건가요? (Feat. 메모리 관리) (4) | 2024.10.30 |
---|---|
[Youtube review] [엑셈 웨비나] JVM 성능관리의 기초 및 OOM 분석 사례 - JAVA Application 성능 관리의 기초 (0) | 2024.10.30 |
[Youtube review] 자바 메모리 구조 뿌시기 [JVM이란?] (0) | 2024.10.30 |