컴포넌트 | 설명 | 비고 |
---|---|---|
매직 넘버 | 0xCAFEBABE | “이 파일이 클래스 파일이다” |
클래스 파일 포맷 버전 | 클래스 파일의 메이저/마이너 버전 | 버전 에러 판단 |
상수 풀 | 클래스 상수들이 모여 있는 위치 | 상수값: 클래스명, 인페이스명, 필드명 |
액세스 클래스 | 추상 클래스, 정적 클래스 등 클래스 종류 표시 | public? final? 인터페이스? 추상클래스?인지 표시 |
this 클래스 | 현재 클래스 명 | 클래스에 포함된 타입 계층, 상수 풀을 가리키는 인덱스로 표시 |
슈퍼 클래스 | 슈퍼 클래스(부모 클래스)명 | 위와 동일 |
인터페이스 | 클래스가 구현한 모든 인터페이스 | 위와 동일 |
필드 | 클래스에 들어 있는 모든 필드 | 시그니처 비슷한 구조를 정의하고, 수정자 포함 |
메서드 | 클래스에 들어 있는 모든 메서드 | 위와 동일 |
속성 | 클래스가 지닌 모든 속성 | 더 복잡하고 크기가 고정되지 않은 구조를 나타냄 |
C++ | Java | |
---|---|---|
분류 | AOT 컴파일러 (목표 시스템에 맞는 컴파일) | 프로필 기반 최적화(PGO) |
장점 | 성능 예측 가능 | 수집한 추정 정보로 최적화 |
단점 | 프로세서에 특정한 기능 개선 불가 | 성능 예측 불가 |
개선 | 동적 인라이닝, 가상 호출 |
JVM은 성숙한 실행 플랫폼으로 관측하는 다양한 기술 제공
java.lang.instrument
인터페이스로 메서드 바이트코드 조작