Java Virtual Machine의 기본 구성요소:
(동영상 튜토리얼 공유: java 강좌)
클래스 로딩 서브시스템, 런타임 데이터 영역(JVM 메모리 모델), 실행 엔진, 로컬 메소드 인터페이스
클래스 로더:
컴파일된 .class 바이트코드 파일을 런타임 데이터 영역에서 사용할 런타임 데이터 영역으로 로드하는 일을 주로 담당합니다.
런타임 데이터 영역(JVM 메모리 모델):
1. 힙: 주로 객체를 저장하고 여러 스레드에 의해 공유됩니다(가비지 수집의 주요 영역).
2. 메소드 영역: 주로 상수, 정적 변수, 클래스 메타 정보(클래스 이름, 메소드, 필드, 버전 등)를 저장합니다.
3. 스레드 스택: 메서드 매개변수, 지역 변수, 중간 작업 결과, 개체 참조를 저장하고 다른 모듈이 작동하는 데 필요한 일부 데이터 등을 제공합니다.
4. 로컬 메서드 스택: 로컬 메서드 스택은 가상 머신에서 사용되는 기본 메서드를 제공합니다.
5. 프로그램 카운터: 현재 스레드에서 실행되는 바이트 코드의 줄 번호 표시는 로컬 메서드를 실행할 때 null입니다.
실행 엔진:
실행 엔진은 Java 바이트코드의 JVM 실행의 핵심입니다. 실행 방법은 주로 해석 실행, 컴파일 실행, 적응형 최적화 실행 및 하드웨어 칩 실행으로 구분됩니다.
로컬 메소드 인터페이스:
Java가 아닌 언어로 구현된 메소드 인터페이스입니다.
jdk1.8 jvm 메모리 구조 다이어그램:
1.8 이전 JVM 메모리 모델과 1.8 사이의 차이점:
주요 차이점:
1. 메타데이터 영역이 영구 생성을 대체합니다. 메타스페이스의 본질은 영구 생성의 본질과 유사합니다. 둘 다 JVM 사양의 메서드 영역을 구현한 것입니다(ps: 메서드 영역은 Java 가상 머신의 사양이며 영구 생성과 메타스페이스는 모두 메소드 영역의 구현).
2. 메타데이터 영역이 가상 머신에서 로컬 메모리로 이동되었습니다.
3. jdk1.8의 상수 풀과 정적 변수는 저장을 위해 힙으로 이동되었습니다(논리적으로 여전히 메소드 영역에 속함)
관련 권장 사항: Java 시작하기
위 내용은 Java 가상 머신의 기본 구성 요소 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!