>  기사  >  Java  >  Java Virtual Machine Learning - 객체 액세스

Java Virtual Machine Learning - 객체 액세스

黄舟
黄舟원래의
2017-03-18 17:51:441488검색

객체 액세스에는 Java 스택, Java 힙, 메서드 영역이라는 세 가지 메모리 영역이 포함됩니다.

예: 다음 코드:

Object objectRef = new Object();

이 코드가 메소드 본문에 나타난다고 가정하면 "Object objectRef" 부분은 Java 스택의 로컬 변수에 참조 유형 Data로 반영됩니다. 나타납니다. "new Object()" 부분은 Java 힙에 반영되어 Object 유형의 모든 인스턴스 데이터 값을 저장하는 구조화된 메모리를 형성합니다. 이 메모리의 길이는 특정 유형 및 구현된 객체 메모리 레이아웃에 따라 다릅니다. 가상 머신은 고정되어 있지 않습니다. 또한 Java 힙에는 이 객체 유형 데이터(예: 객체 유형, 상위 클래스, 구현된 인터페이스, 메소드 등)를 찾을 수 있는 주소 정보도 포함되어야 합니다. 이러한 데이터 유형은 메소드 영역에 저장됩니다.

Java 가상 머신 사양의 참조 유형은 객체를 가리키는 참조 주소만 규정하며 Java 힙의 객체 위치에 액세스하기 위해 이 참조를 찾아야 하는 방식을 정의하지 않습니다. 다른 가상 머신에 의해 구현된 액세스 방법은 다를 수 있습니다. 핸들과 직접 포인터를 사용하는 두 가지 주요 방법이 있습니다.

핸들의 접근 방법 : Java 파일은 핸들 풀로 메모리 조각으로 나누어져 객체의 핸들 주소가 저장됩니다. 객체 인스턴스 데이터와 유형 데이터 각각의 특정 주소 정보를 포함합니다.

포인터 접근 방식: 참조변수는 객체의 주소를 직접 저장하고, 자바 힙 객체의 일부는 객체 인스턴스 데이터를 저장하며, 다른 부분은 객체 유형 데이터를 저장합니다.


핸들 액세스 방법을 사용하는 가장 큰 장점은 참조가 안정적인 핸들 주소를 저장한다는 것입니다. 객체 이동 핸들의 인스턴스 데이터 포인터만 변경하면 되며 참조는 변경할 필요가 없습니다. 포인터 접근 방법을 사용하는 가장 큰 장점은 포인터 위치 지정에 드는 시간 오버헤드를 절약한다는 점입니다. 가상 머신에서는 두 번째 방법(직접 포인터 접근)을 사용합니다.

위 내용은 Java 가상 머신러닝 - 객체 접근 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


관련기사 :

Java Virtual Machine에 대한 자세한 설명

Java Virtual Machine에 대한 심층적인 이해

Java Virtual Machine Learning - 클래스 로딩 메커니즘

Java Virtual Machine Learning - 객체 메모리 할당 및 재활용

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.