正确的认识 字节码文件

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


下载jclasslib

https://github.com/ingokegel/jclasslib/releases/tag/6.0.4
用这个工具打开.class文件

在这里插入图片描述

字节码文件组成

字节码文件的组成部分,它将我们的java代码文件中的内容编译后进行分类。
在这里插入图片描述

基础信息

我们可以通过上面这个工具来查看字节码文件中基础信息的内容,
比如主版本号/ 父类是什么(继承了哪个类)/接口
解决我们在代码中遇到的相关问题, 比如


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


常量池

在这里插入图片描述
常量池的最大意义是避免重复的值 节省空间,在我们的代码中的常量 值也好 或者 字段的名称 方法的名称, 只要是重复的名称 在常量池中只会存一份:
比如 StringBuilder 它可以是类名 也可以是一个字符串叫 ”StringBuilder“

在常量池中它回这样存:
在这里插入图片描述
它的引用id 是40 ,意味着多个地方要用就直接引用#40

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


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/309033.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV(Python)基础—9小时入门版

OpenCV(Python)基础—9小时入门版 # # Author : Mikigo # Time : 2021/12/1 # 一、一句话简介 OpenCV (Open Source Computer Vision Library) 是用 C 语言编写,提供 Python、Java 等语言 API的一个开源计算机视觉库。 二、安装 1、Debian 系使用 apt 安装 O…

基于JAVA的考研专业课程管理系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 考研高校模块2.3 高校教师管理模块2.4 考研专业模块2.5 考研政策模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 考研高校表3.2.2 高校教师表3.2.3 考研专业表3.2.4 考研政策表 四、系统展示五、核…

PostgreSQL10数据库源码安装及plpython2u、uuid-ossp插件安装

PostgreSQL10数据库源码安装及plpython2u、uuid-ossp插件安装 1、环境2、安装包下载3、安装3.1 、解压3.2、配置3.3、编译安装3.4 、启动与关闭 4、安装 uuid-ossp 、plpython2u插件5、参考 1、环境 centos 7 、 postgresql 10.19 2、安装包下载 postgres 源码安装包 3、安…

平凯数据库亮相 2023 信息技术应用创新论坛

11 月 25 日,2023 信息技术应用创新论坛在常州开幕。江苏省工业和信息化厅副厅长池宇、中国电子工业标准化技术协会理事长胡燕、常州市常务副市长李林等领导出席论坛并致辞。中国工程院院士郑纬民出席并作主题报告。来自产学研用金等各界的千余名代表参加本次论坛。…

Flutter BottomSheet 拖动分两段展示

第一段 第二段 实现思路 通过 GestureDetector 的 Drag 方法,动态改变Dialog的高度,通过设置一个最大高度和最小高度分成两层进行展示 实现 常用的展示BottomSheet的方法为 showModalBottomSheet /// 设置最高最好以高度的比例进行设置,方…

【C++入门(一)】:详解C++语言的发展及其重要性

🎥 屿小夏 : 个人主页 🔥个人专栏 : C入门到进阶 🌄 莫道桑榆晚,为霞尚满天! 文章目录 🌤️什么是C🌤️C的发展史🌤️C的重要性☁️语言的广泛度☁️C的领域⭐…

算法刷题:最大异或对(Trie树扩展)、食物链(并查集扩展)

目录 引言一、最大异或对(Trie树扩展)1.题目描述2.解题思路3.代码实现4.测试 二、食物链(并查集扩展)1.题目描述2.解题思路3.代码实现4.测试 引言 这两个扩展题能够让我们更加的熟悉Trie树和并查集的使用,这两道题可以…

Linux:apache优化(2)—— 网页传输压缩

网页传输压缩 客户端在请求httpd服务器数据,httpd服务器在返回数据包给客户端时,先对返回的数据进行压缩,压缩之后再传输 作用:配置 Apache 的网页压缩功能,是使用 Gzip 压缩算法来对 Apache 服务器发布的网页内容进行…

【Spring】spring的容器创建

目录 控制反转IOC 依赖注入DI 创建spring的容器方式: 思考: spring整合Junit4 控制反转IOC 把对象的创建和对象之间的调用过程,交给Spring管理,IOC是容器,是思想。!!! 依赖注入…

关于ISI、SCI、EI、IEEE、Elsevier、Springer, etc的理解

文章目录 0、一文搞定 学术文章发表 基本概念1、关于会议组织者、出版商、科研工作者的关系1.1 SCI到底是什么1.2 EI到底是什么1.3 EI-SCI-收录-检索-出版商-会议组织者关系 2、关于ISI、SCI 、汤森路透、路透社的关系2.1 ISI web of knowledge2.2 Master Journal List2.3 Jour…

按摩上门预约小程序源码系统 开发组合:PHP+MySQL 附带完整的搭建教程

现代生活节奏的加快,人们越来越注重健康与放松。按摩作为传统的舒缓方式,市场需求逐年上升。然而,传统的按摩服务预约方式较为繁琐,用户需拨打热线电话或前往实体店进行预约,这无疑增加了用户的操作成本。因此&#xf…

vscode 支持c,c++编译调试方法

概述:tasks.jason launch.json settings.json一定要有,没有就别想跑。还有就是c 和c配置有区别,切记,下文有说 1.安装扩展插件。 2.安装编译器,gcc.我用的是x86_64-8.1.0-release-win32-seh-rt_v6-rev0.7z &#xf…