이유는 아마도 UseCodeCacheFlushing = true 옵션 일 수 있습니다. 아래 3 버전 JDK의 만들면 기본적의 설정 :
$ java -XX:+PrintFlagsFinal -version | grep CodeCacheFlush
bool UseCodeCacheFlushing = true {product}
자바 버전 "1.8.0_25" 자바 (TM) SE 런타임 환경 자바 핫스팟 (TM) 64 비트 서버 (1.8.0_25-B18를 구축) VM
$ ./java -XX:+PrintFlagsFinal -version | grep CodeCacheFlush
uintx CodeCacheFlushingMinimumFreeSpace = 1536000 {product}
intx MinCodeCacheFlushingInterval = 30 {product}
bool UseCodeCacheFlushing = true {product}
자바 버전 "1.7.0_79" 자바 (TM) SE 런타임 환경 자바 핫스팟 (TM) 64 비트 서버 (1.7.0_79-B15를 구축) (25.25-B02, 혼합 모드를 구축) VM (빌드 24.79-b02, 혼합 모드)
$ java -XX:+PrintFlagsFinal -version | grep CodeCacheFlush
uintx CodeCacheFlushingMinimumFreeSpace = 1536000 {product}
intx MinCodeCacheFlushingInterval = 30 {product}
bool UseCodeCacheFlushing = true {product}
자바 버전 "1.7.0_51" 자바 (TM) SE 런타임 환경 (빌드 1.7.0_51-B13) 자바 핫스팟 (TM) 64 비트 서버 VM (혼합 모드를 24.51-B03를 구축)
일부 메소드가 컴파일되지 않아서 일 수 있습니다. – assylias
감사의 말 assylias, 일부 방법은 '최적화 된 것'때문에 무언가를 버릴 필요가 있다는 것을 의미합니까? JVM 기사에서 JVM은 거의 통계 정보를 기반으로 최적화 된 방법을 사용하여 드물게 발생하는 논리적 분기를 제거 할 수 있다고 읽었습니다. – abuuu
다형성 (polymorphism)의 경우 디 컴파일해야하는 메소드가 있습니다 (예 : http://mechanical-sympathy.blogspot.co.uk/2012/04/invoke-interface-optimisations.html). 이것이 내가 당신이 관찰하는 것에 대한 이유인지는 모르겠습니다. 단지 추측 일뿐입니다. – assylias