字节码文件

内容 image1
魔数 image2
主副版本号

image3

作用:判断版本以更改正确的版本

高版本可以加载低版本,但是很多用法会不一样,

如果是一个已经存在10年的项目,想从jdk8升级到jdk17,很难的

解决方法: 升级jdk(一般兼容)/降低依赖版本(better)

基本信息总结 image5
常量池

问:为什么String常量不直接存放字面量值?

答:字段名和字段值都是通过索引指向字符串字面量,节省开支

What?

image6

运行时常量池:当类加载器(ClassLoader)把 .class 文件读进 JVM 时,

虚拟机会从字节码中提取这张“常量词典”,然后放入内存的一个区域,

称为 运行时常量池.

方法

image8

i++和k+=2效率一样高 直接INC操作LVT

常用工具
  1. javap

image9

2.jclasslib

3.arthas

新接受请求

image11