본 글에서는 Java Virtual Machine에서의 객체 접근에 대한 상세 설명을 중심으로 소개하고 있으니, 필요한 친구들은
객체 상세 설명을 참고하시기 바랍니다. Java 가상 머신에서의 액세스
객체 액세스에는 Java 스택, Java 힙 및 메소드 영역이라는 세 가지 메모리 영역이 포함됩니다.
예: 다음 코드:
Object objectRef = new Object();
이 코드가 메소드 본문에 나타난다고 가정하면 "Object objectRef" 부분은 다음과 같이 Java 스택의 로컬 변수에 반영됩니다. 참조 유형 데이터가 나타납니다. "new Object()" 부분은 Java 힙에 반영되어 특정 유형 및 객체 메모리 레이아웃에 따라 객체 클래스 유형의 모든 인스턴스 데이터 값을 저장하는 구조화된 메모리를 형성합니다. 가상 머신에 의해 구현되는 것과는 달리 이 메모리의 길이는 고정되어 있지 않습니다. 또한 Java 힙에는 이 객체 유형 데이터를 찾을 수 있는 주소 정보(예: 객체 유형, 상위 클래스, 구현된 인터페이스, 메소드 등)도 포함되어야 합니다. 영역.
Java 가상 머신 사양의 참조 유형은 객체를 가리키는 참조 주소만 규정하며, 이 참조가 Java 힙에서 객체 위치에 액세스하고 위치를 지정하는 방법을 정의하지 않습니다. 가상 머신 구현에는 핸들과 직접 포인터를 사용하는 두 가지 주요 방법이 있습니다.
핸들의 액세스 방법 : Java 파일은 핸들 풀에 따라 메모리 조각으로 분할되어 참조에 저장됩니다. 핸들에는 객체 인스턴스 데이터와 유형 데이터 각각의 특정 주소 정보가 포함되어 있습니다.
포인터 접근 방식: 참조 변수는 객체의 주소를 직접 저장하는 반면, Java 힙 객체의 일부는 객체 인스턴스 데이터를 저장하며, 다른 부분은 객체 유형 데이터를 저장합니다.
객체에 액세스하는 이 두 가지 방법에는 고유한 장점이 있습니다. 핸들 액세스 방법을 사용하는 가장 큰 장점은 참조가 안정적인 핸들 주소를 저장한다는 것입니다. 객체가 이동되면 변경됩니다. 핸들의 인스턴스 데이터 포인터이며 참조는 변경할 필요가 없습니다. 포인터 접근 방법을 사용하는 가장 큰 장점은 포인터 위치 지정에 드는 시간 오버헤드를 절약한다는 점입니다. 가상 머신에서는 두 번째 방법(직접 포인터 접근)을 사용합니다.위 내용은 Java Virtual Machine의 객체 액세스에 대한 자세한 소개(그림)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!