????????PrintCompilation????????????Stephen Colebourneд??????????????????????????и??е???庬?壬??????????????????????
????PrintCompilation???????????????????????????????????Jarscan????????????????????????Щ???????????JIT?????????????????????????????Щ???????????????Щ??н??С?????PrintCompilation?????????????????????????????????????????JIT?????????????
?????????PrintCompilation???????????С????????????ò??????????
?????????????δ????????????????????????????????????????????????
????Hotspot??????????????????????????????У????????????????????????
??????????????????????????PrintCompilation????????????????????????????????????????????????????????????????????????PrintCompilation???????????????????????С??????ж????????????JIT?????????????????????????裺
?????????????λ??????????·??????????
?????????Щ??????г?????Jarscan?????????С?
?????????Щ??????????????PrintCompilation?????????С?
?????????????????????????????????????????3????????????????????????????????????????С???????????????????????????????Ч?????????????е???????????????????????Ч?????????????????????????????????????ж?????????????????????????????????????????????????????
???????????е?Java?????????????????????????Jarscan???????????????Щ??????????????????????????????????????????????????????JVM???????????? rt.jar?????
????????y???е??????????????Java 7 ??Java 8????????????仯??????????????????Java 7 ?? Java8 JDK?????????????????Jarscan???????rt.jar???????????????????????????????
????$ ./jarScan.sh /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/jre/lib/rt.jar
????> large_jre_methods_7u71.txt
????$ ./jarScan.sh /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/rt.jar
????> large_jre_methods_8u25.txt
?????????????????????????????CSV??????????JDK 7u71?????????????JDK 8u25??????????????????汾???????????Щ?仯???????????????ж??????????????????汾??JRE???ж????JIT???????????
????$ wc -l large_jre_methods_*
????3684 large_jre_methods_7u71.txt
????3576 large_jre_methods_8u25.txt
???????????????????Java 7??Java 8 ????100??????????????????????????????о????????Щ????????仯?????????????β???????????ν??????Jarscan??????????Jarscan??????????????3??????????
????"<package>"??"<method name and signature>"??<num of bytes>
???????????????????????????????ЩUnix??????????????о????????????磬?????????Java 7 ?? Java 8 ???????汾??java.lang??????Щ?????????????????
????$ cat large_jre_methods_7u71.txt large_jre_methods_8u25.txt | grep -i
????^"java.lang | sort | uniq -c
???????????????grep??????????????????java.lang??????У???????λ???java.lang?е???????????????????sort | uniq -c ???????????UnixС??????????????????????????????????????????????????????????????????????????????????????????????????????????????????λ???????????????????????????????????????н????
????$ cat large_jre_methods_7u71.txt large_jre_methods_8u25.txt | grep -i ^"java.lang | sort | uniq -c
????2 "java.lang.CharacterData00"??"int getNumericValue(int)"??835
????2 "java.lang.CharacterData00"??"int toLowerCase(int)"??1339
????2 "java.lang.CharacterData00"??"int toUpperCase(int)"??1307
????// ... skipped output
????2 "java.lang.invoke.DirectMethodHandle"??"private static java.lang.invoke.LambdaForm makePreparedLambdaForm(java.lang.invoke.MethodType??int)"??613
????1 "java.lang.invoke.InnerClassLambdaMetafactory"??"private java.lang.Class spinInnerClass()"??497
????// ... more output ----
?????????У???2???????????uniq -c ??????????????????????????????????????Щ??????Java 7 ??Java 8 ??????????С??и????????????????????????Щ?????????????и?????????????????????и??????????1??????????μ??????
????a)?????????????????
????b)??Щ??????μ??????
??????????????1???????????
????1 "java.lang.invoke.AbstractValidatingLambdaMetafactory"??"void
????validateMetafactoryArgs()"??864
????1 "java.lang.invoke.InnerClassLambdaMetafactory"??"private
????java.lang.Class spinInnerClass()"??497
????1 "java.lang.reflect.Executable"??"java.lang.String
????sharedToGenericString(int??boolean)"??329
??????????????????????????????????Java 8????????????·?????????????????????lamda???????????????????????????????м?в??????й??????????????????Java 8 ???????????????????????е???????
??????????????JDK??????Щ?????????????
????$ grep -i ^"java.lang.String large_jre_methods_8u25.txt
????"java.lang.String"??"public java.lang.String[] split(java.lang.String??int)"??326
????"java.lang.String"??"public java.lang.String toLowerCase(java.util.Locale)"??431
????"java.lang.String"??"public java.lang.String toUpperCase(java.util.Locale)"??439
???????????????????????????????Java 8 ???Щjava.lang.String???Щ???????????????????????????????????toLowerCase??toUpperCase??????????????????????????????????е?????????????????????????????UTF-8????????????ASCII???????????????????????????С?????????????????????????
????????????????????????????ASCII?????????????????????????????StringUtils???????а????Щ????????????????????????????????????????Щ????????????????????????????????
???????????????????????????????????????????????????JITWatch???????????????????????JITWatch???????????-XX:+LogCompilation???????????????????????????XML?????????PrintCompilation??????????????????Щ?????????????X??MB????????????????е?????????????????????????????????????????????????????????????á?
????PrintCompilation??Jarscan?????ò?????????????????????????????????????????????????????о???????м????????????????????????£???????????У???????????????????????????Щ???????????