개발
JVM
ka0oll
2020. 3. 21. 00:53
JRE
- 자바를 실행하기 위한 도구
JDK
- JRE + 자바개발도구(컴파일러 등등)
메모리구조
heap
- 객체를 저장
메소드 영역
- 클래스 정보, static 변수
PC(Program Counter) 레지스터
- 실행되야될 명령어 위치를 가지고있다. 쓰레드마다 생성
스택
- 쓰레드마다 스택 생성, 메소드 호출 스택
네이티브 메소드 스택
- 네이티브를 실행하기 위한 스택
자바 실행 순서
COMPILE
- bytecode로 컴파일
클래스 로더
- 필요한 class들을 동적으로 메모리에 올림, class path에 있는것들은 다올린다.
- 힙에는 Class객체 생성
- 메소드 영역에는 클래스 정보를
- class로더 계층형 체이닝, 위에서 찾고 없으면 밑으로 위임
- 부트스트랩 : java_home/lib 자바 코어 라이브러리
- 플랫폼(익스텐션) 클래스 로더 : java_home/lib/ext
- 어플리케이션 클래스 로더 : classpath에 있는 라이브러리
실행엔진
- 인프리티러를 가지고 네이코드로 변경.
- JIT 컴파일러 : 인터프리터 효율 높이기 위해 반복되는 바이트코드는 네이티브 코드를 캐시화