正确的认识 字节码文件

上一篇中认识了JVM的基本组成,我们说JVM只认识字节码文件。那么在字节码文件进入JVM之前,我们先认识了解字节码文件长什么样,我们作为工程师不需要去死扣底层的理论知识,但是我们只是需要正确的打开字节码文件 知道里面有哪些部分组成,正确的认识和识别这些部分


下载jclasslib

https://github.com/ingokegel/jclasslib/releases/tag/6.0.4

用这个工具打开.class文件

字节码文件组成

字节码文件的组成部分,它将我们的java代码文件中的内容编译后进行分类。

基础信息

我们可以通过上面这个工具来查看字节码文件中基础信息的内容,

比如主版本号/ 父类是什么(继承了哪个类)/接口

解决我们在代码中遇到的相关问题, 比如


像这种某个类文件版本错误,我们可以查一下它的主版本号 就知道是版本不兼容。


常量池

常量池的最大意义是避免重复的值 节省空间,在我们的代码中的常量 值也好 或者 字段的名称 方法的名称, 只要是重复的名称 在常量池中只会存一份:

比如 StringBuilder 它可以是类名 也可以是一个字符串叫 "StringBuilder"

在常量池中它回这样存:

它的引用id 是40 ,意味着多个地方要用就直接引用#40

这样最大的好处就是节省空间。


使用阿里arthas 查看线上代码的原始模样

相关推荐
张哈大7 小时前
【 java 虚拟机知识 第二篇 】
java·开发语言·jvm·笔记
YuTaoShao9 小时前
Java八股文——JVM「垃圾回收篇」
java·开发语言·jvm
@泽栖9 小时前
讲讲JVM的垃圾回收机制
java·jvm·面试·八股文
ManageEngine卓豪9 小时前
如何有效监控JVM环境,保障应用性能
jvm·虚拟机监控·应用性能监控·java 虚拟机
重庆小透明16 小时前
【从零开始学习JVM | 第六篇】运行时数据区
java·jvm·后端·学习
gadiaola20 小时前
【JVM面试篇】高频八股汇总——类加载和类加载器
java·jvm·面试
魔道不误砍柴功1 天前
《JVM 启动参数怎么写最优?从 Xms 到 GCLog 的调优实践》
jvm
YuTaoShao1 天前
Java八股文——JVM「类加载篇」
java·开发语言·jvm
爱玩电脑的L1 天前
javaee初阶-多线程
java·开发语言·jvm
hqxstudying1 天前
JAVA面试题
java·jvm·数据库·redis·mysql·oracle