JVM 调优实战--JVM字节码

目录


通过javap命令查看class文件的字节码内容

常量池

​描述符

字段描述符

方法描述符

解读方法字节码

图解

研究i++与++i的不同

查看字节码

对比

分析字符串拼接孰优孰劣

小结


通过javap命令查看class文件的字节码内容

通过javap命令查看字节码并将内容写入到Test1.txt文件中的命令:

javap -v Test1.class > Test.txt

打开Test1.txt文件:

常量池

描述符

字段描述符

方法描述符

解读方法字节码

图解

研究i++与++i的不同

查看字节码

对比

分析字符串拼接孰优孰劣

编写测试案例:

m1方法的执行过程中,jvm底层会new StringBuilder()进行处理;

结论:m1方法中虽然在代码中使用的是+号拼接,但是在字节码中也被编译成了StringBuilder的方式。因此可以得出结论:

字符串拼接,+号和StringBuilder是相等的,效率一样。

再来看一个案例:

m1方法,底层JVM的执行过程是循环多少次就new多少个StringBuilder对象:

goto语句,比如goto 5,跳转到第5行继续执行。

m2方法,JVM的层只new了一个StringBuilder对象:

结论:m1的效率明显低于m2方法。

小结

使用字节码的方式可以很好地查看代码底层的执行,从而可以看出哪些实现效率高,哪些实现效率低。可以更好地对我们的代码进行优化,让程序执行效率更高。

发布了824 篇原创文章 · 获赞 369 · 访问量 79万+

猜你喜欢

转载自blog.csdn.net/a772304419/article/details/104015204