영역 분할:
프로그램이 실행되는 동안 Java 가상 머신은 아래와 같이 메모리를 다양한 기능을 가진 여러 영역으로 나눕니다.
이 그림에는 다양한 메모리 분할 영역이 나열되어 있습니다.
스레드 전용: 프로그램 카운터, 가상 머신 스택, 로컬 메소드 스택 스레드 공유: 힙, 메소드 영역 아래에서는 각 영역의 기능과 기능을 하나씩 소개합니다 프로그램 카운터 :1. 프로그램 카운터는 주로 실행 중인 바이트코드 라인 번호를 가리키는 데 사용됩니다. 각 스레드에는 서로 공유되지 않는 별도의 프로그램 카운터가 있으며, 프로그램은 가리키는 바이트코드 라인 번호를 변경하여 실행됩니다.
2. 루프, 점프, 예외 처리 등과 같은 메커니즘은 모두 이 카운터에 의존하여 완료됩니다. 3. 프로그램이 Java 프로그램을 실행하면 실행 중인 바이트코드를 가리킵니다. 네이티브 메서드이면 그 값은 비어 있습니다 Java 가상 머신 스택:1. 가상 머신 스택은 스레드 전용입니다. 각 메서드는 로컬 변수를 저장하기 위해 실행될 때 스택 프레임을 생성합니다. table., 메소드 종료, 동적 링크, 피연산자 스택 및 기타 정보,
2. 각 메소드의 실행 프로세스는 가상 머신 스택의 스태킹에서 팝핑까지의 과정입니다. 많은 사람들이 Java 메모리를 힙 메모리로 나눈다고 말합니다. 및 스택 메모리, 여기서 스택 메모리는 위에서 언급한 가상 머신 스택 , 기본 데이터 유형(intbytecharlong 등), 객체 참조 및 컴파일러가 알고 있는 반환 주소 유형을 주로 저장하는 지역 변수 테이블 확장:객체 참조(참조): 객체 자체가 아니며, 객체의 시작 주소를 가리키는 참조 포인터일 수도 있고, 객체를 나타내는 핸들이거나 기타 관련 위치일 수도 있습니다. ReturnAddress: 객체가 아닙니다. Java API를 입력하면 우리가 원하는 것이 될 수 없습니다. 호출하면 바이트코드 명령어의 주소를 가리킵니다. 기본 메소드 스택
가상 머신 스택과 유사하게, 제공하는 메모리입니다. 기본 메소드
Java 힙힙 메모리는 스레드 공유 메모리로, 주요 목적은 객체를 저장하는 것이며 가비지 컬렉터가 관리하는 주요 영역이기도 합니다.
메서드 영역(비힙이라고도 함)
역시 메모리 공유 메모리이며, 저장하는 데 사용됩니다. 로드된 클래스 정보, 상수, 정적 변수, JIT(Just-In-Time) 컴파일러로 컴파일된 코드 등 런타임 상수 풀 : 메소드 영역의 일부이며 컴파일러에서 생성된 다양한 리터럴 및 기호 참조를 저장하는 데 사용됩니다
다이렉트 메모리:가상 머신 런타임 데이터 영역의 일부가 아니며 JVM에서 관리하는 메모리에 속하지 않습니다. NIO에서는 네이티브 기능을 사용하여 다이렉트 메모리를 직접 할당할 수 있습니다. , 그리고 이 메모리에 대한 참조로 Java의 DirectByteBuffer 객체를 통해 작동합니다
장점: 메모리 복사 단계가 절약되고 효율성이 더 빠릅니다 단점: 제어가 어렵고 메모리 누수가 발생하기 쉽습니다위 내용은 JVM 고급 기능 - Java 메모리 구조 영역 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!