> Java > java지도 시간 > Java에서 JVM의 바이트코드 구조는 무엇입니까?

Java에서 JVM의 바이트코드 구조는 무엇입니까?

WBOY
풀어 주다: 2023-04-22 15:55:08
앞으로
841명이 탐색했습니다.

1. 매직넘버

모든 .class 파일의 처음 4바이트는 매직넘버이며, 매직넘버의 고정값은 0xCAFEBABE입니다. 매직 넘버는 파일 시작 부분에 배치되며 JVM은 파일 시작 부분을 기반으로 파일이 .class 파일일 가능성이 있는지 여부를 결정할 수 있습니다. 이 경우 후속 작업이 계속됩니다.

2. 버전 번호

버전 번호는 매직 번호 뒤의 4바이트입니다. 처음 2바이트는 다음 버전 번호를 나타내고 마지막 2바이트는 기본 버전 번호를 나타냅니다.

주 버전 번호 뒤의 바이트는 상수 풀 항목입니다. 상수 풀에는 리터럴과 기호 참조라는 두 가지 유형의 상수가 저장됩니다. 리터럴은 코드에서 최종 상수 값으로 선언되며, 기호는 카테고리 및 인터페이스의 전역적으로 한정된 이름, 필드의 이름 및 지정자, 메소드의 이름 및 지정자를 나타냅니다. 상수 풀은 상수 풀 카운터와 상수 풀 데이터 영역의 두 부분으로 나뉩니다.

3. 상수 풀

상수 풀 끝 뒤의 2바이트는 클래스가 클래스인지 인터페이스인지, Public, Abstract, Final 및 기타 데코레이터로 장식되었는지 여부를 나타냅니다.

4. 액세스 플래그

상수 풀 끝 뒤의 2바이트는 클래스가 클래스인지 인터페이스인지, Public, Abstract 및 Final과 같은 수정자에 의해 수정되는지 여부를 나타냅니다.

5. 현재 클래스 이름

액세스 플래그 뒤의 2바이트는 현재 클래스의 정규화된 이름을 나타냅니다. 이 2바이트에 의해 저장된 값은 상수 풀의 인덱스 값이며, 인덱스 값에 따라 이 클래스의 정규화된 이름을 상수 풀에서 찾을 수 있습니다.

6. 상위 클래스 이름

현재 클래스 이름 뒤의 두 바이트는 상위 클래스의 정규화된 이름을 나타냅니다. 위와 동일합니다. 상수 풀의 인덱스 값도 저장됩니다.

7. 인터페이스 정보

부모 클래스 이름 뒤에는 클래스 또는 부모 클래스에 의해 구현된 인터페이스 수를 설명하는 2바이트 인터페이스 카운터가 있습니다. 다음 n 바이트는 모든 인터페이스 이름에 대한 문자열 상수의 인덱스 값입니다.

8. 필드 테이블

필드 테이블은 클래스 수준 변수 및 인스턴스 변수를 포함하여 클래스 및 인터페이스에 선언된 변수를 설명하는 데 사용되지만 메서드 내에 선언된 지역 변수는 포함되지 않습니다.

Java의 기본 데이터 유형은 무엇입니까?

Java의 기본 데이터 유형은 다음과 같이 구분됩니다.

1. 정수 유형은 정수의 데이터 유형을 나타내는 데 사용됩니다.

2. 부동 소수점 유형, 소수를 나타내는 데 사용되는 데이터 유형입니다.

3. 문자 유형의 키워드는 "char"입니다.

4. 불리언형은 논리값을 표현하는 기본 데이터형입니다.

위 내용은 Java에서 JVM의 바이트코드 구조는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿