객체 액세스에는 Java 스택, Java 힙, 메서드 영역이라는 세 가지 메모리 영역이 포함됩니다.
예: 다음 코드:
Object objectRef = new Object();
이 코드가 메소드 본문에 나타난다고 가정하면 "Object objectRef" 부분은 Java 스택의 로컬 변수에 참조 유형 Data로 반영됩니다. 나타납니다. "new Object()" 부분은 Java 힙에 반영되어 Object 유형의 모든 인스턴스 데이터 값을 저장하는 구조화된 메모리를 형성합니다. 이 메모리의 길이는 특정 유형 및 구현된 객체 메모리 레이아웃에 따라 다릅니다. 가상 머신은 고정되어 있지 않습니다. 또한 Java 힙에는 이 객체 유형 데이터(예: 객체 유형, 상위 클래스, 구현된 인터페이스, 메소드 등)를 찾을 수 있는 주소 정보도 포함되어야 합니다. 이러한 데이터 유형은 메소드 영역에 저장됩니다.
Java 가상 머신 사양의 참조 유형은 객체를 가리키는 참조 주소만 규정하며 Java 힙의 객체 위치에 액세스하기 위해 이 참조를 찾아야 하는 방식을 정의하지 않습니다. 다른 가상 머신에 의해 구현된 액세스 방법은 다를 수 있습니다. 핸들과 직접 포인터를 사용하는 두 가지 주요 방법이 있습니다.
핸들의 접근 방법 : Java 파일은 핸들 풀로 메모리 조각으로 나누어져 객체의 핸들 주소가 저장됩니다. 객체 인스턴스 데이터와 유형 데이터 각각의 특정 주소 정보를 포함합니다.
포인터 접근 방식: 참조변수는 객체의 주소를 직접 저장하고, 자바 힙 객체의 일부는 객체 인스턴스 데이터를 저장하며, 다른 부분은 객체 유형 데이터를 저장합니다.
Java Virtual Machine에 대한 자세한 설명
Java Virtual Machine에 대한 심층적인 이해