目录


通过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方法。

小结

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

JVM 调优实战--JVM字节码相关推荐

  1. JVM 调优实战--JVM的运行参数及jinfo查看运行参数信息

    为什么要进行JVM优化? 本篇博文基于jdk1.8来讲解. JVM的参数 标准参数比较稳定,基本上各个不同的jdk版本都会支持. -X参数是非标参数,各个版本不同,可能用着用着就没了. -XX参数也属 ...

  2. JVM调优实战:to-space exhausted Evacuation Failure

    一次线上dubbo问题的定位,进行JVM调优实战. 问题 线上dubbo接口provider抛出异常: org.apache.dubbo.rpc.RpcException: Failfast invo ...

  3. 七、JVM调优实战——基本命令使用

    一.JVM类加载机制--自定义类加载器 二.JVM--对象内存分配机制 三.JVM内存模型 四.JVM垃圾收集算法和垃圾收集器 五.CMS垃圾回收器--三色标记算法 六.G1垃圾收集器 七.JVM调优 ...

  4. 纯手写2022年最新JVM调优实战手册,看完让你精通JVM调优

    很多程序员不重视 JVM 内存调优,写出来的代码经常出现 OOM 等内存问题.而且,面试求职者中,很多求职者一旦遇到JVM 或者 JVM 调优方面的问题,往往不知如何回答,才能充分展现自己的能力. j ...

  5. 带你感受一次JVM调优实战

    本文分成两部分,先了解理论,然后再进行实战. 理论篇 1.1 调优目标 JVM调优的两大目标是: 提高应用程序的性能和吞吐量: 通过优化JVM的垃圾回收机制.调整线程池大小和优化代码,可以提高应用程序 ...

  6. JVM从入门到精通(九):JVM调优实战 - arthas 的使用

    Arthas 文档 https://github.com/alibaba/arthas/blob/master/README_CN.md 运行起来我们的java程序 启动 arthas 的 jar 文 ...

  7. 【JVM调优】JVM内存管理调优浅谈

    什么是JVM Java Virtual Machine,Java虚拟机 Java虚拟机有自己完善的硬件架构,如处理器.堆栈等,还具有相应的指令系统. Java虚拟机本质上就是一个程序,当它在命令行上启 ...

  8. JVM调优实战:G1中的to-space exhausted问题

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者:阿杜 来源:公众号「javaadu」 >> 「开学季」当当大促!4-5折优 ...

  9. GC和JVM调优实战

    转载 目录 JVM简介 JVM结构 2.1 方法区 2.1.1 常量池2.1.1.1 Class文件中的常量池2.1.1.2 运行时常量池2.1.1.3 常量池的好处2.1.1.4 基本类型的包装类和 ...

最新文章

  1. 置换群和Burnside引理,Polya定理
  2. ionic react-native和native开发移动app到底那个好
  3. Oracle怎样创建共享文件夹,Oracle vm要如何使用共享文件夹的解决方法
  4. 网络推广专员浅析网站优化导航栏该怎样设置?
  5. 数据库引起的性能瓶颈应如何优化?
  6. PHP检测远端文件是否存在
  7. 来华30载,这些都是Oracle的神来之笔……
  8. 停止坐井观天,是时候让“我个人认为”见鬼去了!
  9. java锁的级别_Java锁的那些事儿之JDK锁(ReentrantLock)
  10. 联想ghost重装系统_联想怎么安装ghostwin7系统的教程
  11. 解决VMware Workstation下面Windows Server 2012R2无法安装Hyper-V
  12. 使用authentication进行身份验证,与Forms表单登陆
  13. Flink Weekly | 每周社区动态更新
  14. 在线html代码生成器,支持网页快速排版 CSS代码一键生成的在线设计工具
  15. 模2运算_模二除法和CRC循环冗余校验
  16. 周公恐惧流言日,王莽谦恭未篡时
  17. 快被95后新人整疯:啥都不会,情商低,乱怼人!
  18. JavaScript 中的事件类型5(读书笔记思维导图)
  19. 【无标题】60秒倒计时
  20. Windows下,Sublime text 在GoSublime中支持goimports

热门文章

  1. 【论文解读】VarifocalNet:如何对候选框排序的最优方案
  2. 统计学习方法第七章作业:SVM非线性支持向量机之SMO序列最小优化算法代码实现
  3. 二十不惑,三十而已|网易互联网人的“焦虑必杀技”
  4. [译] part 8: golang if else 语句
  5. 日期型转json格式(springboot)
  6. MySQL利用存储过程清除所有表中的所有记录
  7. VMware VCenter模板不显示问题
  8. 监控 SQL Server 的运行状况
  9. 决心迈向公有云?先问这五大问题
  10. java-基础练习题3