2011-04-12 3 views

답변

14

버전 6 javac는 클래스 파일에 추가 "스택 맵"속성을 생성하여 jvm으로 쉽고 빠르게 확인합니다. 이 정도의 크기 차이는 의심 스럽지만 대체로 -target 1.5 옵션을 사용하여 이전 버전과 동일한 바이트 코드를 생성 할 수있었습니다.

편집 :이 새로운 속성에 상세 jsr 202

4.8.4 StackMapTable 특성

스택지도 속성의 섹션 4.8.4에서 발견 될 수있는 가변 길이 속성입니다 코드 의 속성 테이블 속성의 이름은 StackMapTable입니다. 이 속성은 형식 검사 (§4.11.1)에 의한 확인 프로세스 인 동안 사용됩니다.

스택 맵 속성은 0 개 이상의 스택 맵 프레임으로 구성됩니다. 각 스택 맵 프레임은 바이트 코드 오프셋을 명시 적으로 또는 암시 적으로 지정하고 로컬 변수에 대해서는 유형 (§4.11.1), 스택에는 피연산자에 대한 확인 유형을 지정합니다.

+0

이것은 v6 javac에 유일하게 추가 된 부분입니까? –

+0

JDK 1.5가 새로운 클래스와 새로운 기능을 제외한 버전 1.6의 코드를 실행할 수없는 주된 이유 일 것 같습니다. –

2

파일의 내용을 javap 명령으로 덤프하여 명백한 것이 있는지 알아보십시오. Java 6 클래스 파일에는 몇 가지 추가 속성이있을 수 있습니다.

관련 문제