학습 내용
- JVM 구조 이해
특징
- 하드웨어 및 운영체제 독립성
- 컴파일 된 코드의 작은 크기
- 보안
- 런타임에 다양한 메모리 영역 조작
클래스 로더
- 컴파일 된 바이트 코드를 읽어와 메모리 영역에 배치
- 영역 구분
- 로딩
- 클래스 파일을 읽음
- class, interface, enum, 메서드, 변수 를 메서드 ( Method ) 영역에 저장.
- 로딩이 끝난 후 해당 타입의 객체를 Class 객체로 생성하여 힙 ( Heap ) 영역에 저장.
- 클래스 파일을 읽음
- 링크
- 클래스나 인터페이스를 JVM 으로 연결 후 실행
- 초기화
- staic 값을 초기화 및 변수 할당
- 로딩
메모리
- 영역 구분
- Thread 에서 자원 공유
- 스택
- Thread 마다 Runtime Stack 을 만들고 Stack Frame 을 push 한다.
- Stack Trace
- Thread 마다 Runtime Stack 을 만들고 Stack Frame 을 push 한다.
- pc ( Program Counter )
- Stack 의 Method 들의 주소 값을 알려준다.
- Native Method Stack
- 다른 언어의 Method 을 Native Method Stack 에 push 한다.
- 힙 ( Heap ) 영역
- 객체, 인스턴스 저장
- 메서드 ( Method ) 영역
- 클래스 수준의 정보 저장
- 스택
- Thread 에서 자원 공유
'Laguage' 카테고리의 다른 글
[Java] Polymorphism in Java (0) | 2022.06.30 |
---|---|
[Java] Java 에서 파일을 읽는 여러가지 방법 (0) | 2022.06.26 |
[Java] What is Serialization in Java? (0) | 2022.06.24 |
[Java] ArchUnit 아키텍처 테스트에 대해 알아보자 (0) | 2022.06.18 |
[JAVA] 스레드 ( Thread ) (1) | 2022.02.08 |
[JAVA] Optional (0) | 2022.01.20 |
[JAVA] @애노테이션 ( Annotation ) (0) | 2021.12.28 |
[JAVA] 열거형 ( enums ) (0) | 2021.12.28 |