일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 우레탄지퍼
- 미니마카
- 비리짐
- WHATTIMEOFTHEDAY
- AATCC
- 웹API
- 필터링후복사붙여넣기
- 미국영어연음
- MERN스택
- 지연환가료
- 암홀트롭
- 슈퍼코딩
- 자켓실측
- 엑셀드래그단축키
- 엑셀자동서식
- TACKING
- 봉제용어
- 엑셀필터복사붙여넣기
- 고급영어단어
- 영어시간읽기
- 40HQ컨테이너
- 나일론지퍼
- 요척합의
- 비슬론지퍼
- 클린코드
- 핸드캐리쿠리어차이점
- Armhole Drop
- 40HQ컨테이너40GP컨테이너차이
- 헤이큐
- 와끼
- Today
- Total
CASSIE'S BLOG
[슈퍼코딩] 40강 JVM 메모리 구조 본문
자바는 두가지 시점이 중요하다.
컴파일 시점과 런타임 시점
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 키워드로 검색하면 된다고함.
'PROGRAMMING > 슈퍼코딩 강의 정리' 카테고리의 다른 글
[슈퍼코딩] JVM 메모리 런타임 (0) | 2023.12.14 |
---|---|
[슈퍼코딩] 11강 자바 애플리케이션 실행하기 (0) | 2023.12.14 |
[슈퍼코딩] 34-2강 객체 상속 실무 (부제: 백화점 관리 시스템) (0) | 2023.12.14 |
[슈퍼코딩] 35강 추상화 (0) | 2023.12.14 |
[슈퍼코딩] 34-1강 객체 상속 실무 (0) | 2023.12.14 |