JVM 调优实战--JVM字节码
目錄
通過(guò)javap命令查看class文件的字節(jié)碼內(nèi)容
常量池
?描述符
字段描述符
方法描述符
解讀方法字節(jié)碼
圖解
研究i++與++i的不同
查看字節(jié)碼
對(duì)比
分析字符串拼接孰優(yōu)孰劣
小結(jié)
?
通過(guò)javap命令查看class文件的字節(jié)碼內(nèi)容
通過(guò)javap命令查看字節(jié)碼并將內(nèi)容寫(xiě)入到Test1.txt文件中的命令:
javap -v Test1.class > Test.txt
打開(kāi)Test1.txt文件:
常量池
描述符
字段描述符
方法描述符
解讀方法字節(jié)碼
圖解
研究i++與++i的不同
查看字節(jié)碼
對(duì)比
分析字符串拼接孰優(yōu)孰劣
編寫(xiě)測(cè)試案例:
m1方法的執(zhí)行過(guò)程中,jvm底層會(huì)new StringBuilder()進(jìn)行處理;
結(jié)論:m1方法中雖然在代碼中使用的是+號(hào)拼接,但是在字節(jié)碼中也被編譯成了StringBuilder的方式。因此可以得出結(jié)論:
字符串拼接,+號(hào)和StringBuilder是相等的,效率一樣。
再來(lái)看一個(gè)案例:
m1方法,底層JVM的執(zhí)行過(guò)程是循環(huán)多少次就new多少個(gè)StringBuilder對(duì)象:
goto語(yǔ)句,比如goto 5,跳轉(zhuǎn)到第5行繼續(xù)執(zhí)行。
m2方法,JVM的層只new了一個(gè)StringBuilder對(duì)象:
結(jié)論:m1的效率明顯低于m2方法。
小結(jié)
使用字節(jié)碼的方式可以很好地查看代碼底層的執(zhí)行,從而可以看出哪些實(shí)現(xiàn)效率高,哪些實(shí)現(xiàn)效率低??梢愿玫貙?duì)我們的代碼進(jìn)行優(yōu)化,讓程序執(zhí)行效率更高。
總結(jié)
以上是生活随笔為你收集整理的JVM 调优实战--JVM字节码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JVM 调优实战--常用JVM命令:jp
- 下一篇: JVM 调优实战--常用命令参数及PS收