-
JAVA - JVMCS/Java 2021. 2. 17. 20:15
JVM
JVM(Java virtual machine)
-
자바 소스코드로 부터 만들어지는 자바 바이너리 파일(.class)을 실행할 수 있다.
- 바이너리 코드를 읽고, 검증하고 실행하며 실행 환경의 규격을 제공한다.
구조
- Class Loader
- 자바 파일(.java)이 생성되면 자바 컴파일러가(javac) 컴파일하여 바이트코드(.class)로 변환해 준다.
- 이때 이러한 class파일들을 모아서 JVM이 OS로부터 할당받은 메모리 영역인 Runtime data area로 적재하는 역할을 한다.
- Execution Engine
- class loader에 의해 메모리에 적재된 클래스(바이트코드)들을 기계어로 변경해 명령어 단위로 실행한다.
- Garbage Collctor
- Heap 메모리 영역에 생성된 객체들 중에 참조되지 않은 객체들을 제거한다.
- Runtime Data Area
- JVM의 메모리 영역으로 자바 애플리케이션 실행시 사용되는 데이터를 적재하는 영역이다.
- 5가지 영역으로 구분된다.
- Method영역: 클래스 멤버 변수, 메소드 정보, type, static, final변수 등이 저장된다.
- Heap 영역: new 키워드로 생성되는 객체와 배열이 저장되는 영역.
- Stack 영역: 지역변수, 파라미터, 리턴 값, 연산에 사용되는 임시 값 등을 저장하는 영역.
- PC Register 영역: 쓰레드가 실행되는 부분의 주소와 명령을 저장하는 영역.
- Native Method Stack 영역: 자바 외 언어로 작성된 네이티브 코드를 위한 메모리 영역이다.
reference
velog.io/@hono2030/JVM%EC%9D%98-%EA%B5%AC%EC%A1%B0
velog.io/@hygoogi/%EA%B8%B0%EC%88%A0-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8-%EB%AA%A8%EC%9D%8C#java
'CS > Java' 카테고리의 다른 글
JAVA - 오버로딩, 오버라이딩 (0) 2021.02.18 JAVA - 인터페이스와 추상클래스 (0) 2021.02.18 JAVA - GC (0) 2021.02.18 JAVA - 접근 제어자 (0) 2021.02.17 JAVA - 객체지향 (0) 2021.02.17 -