如下程序:
~~~
public class ValueAndRefPassTest2 {
public static void main(String[] args) {
int num = 1;
changeNum(num);
System.out.println(num);
}
public static void changeNum(int a){
a = 100;
}
}
~~~
对应字节码解析
```
0 iconst_1 // 将常量1入栈
1 istore_1 // 从操作数栈中弹出一个integer数,存入到局部变量表里下标为1的位置
2 iload_1 // 将局部边量表里下标为1的int值压入到操作数栈中
3 invokestatic #2 // 调用类常量池下标为2的静态方法
6 getstatic #3 // 访问类常量池下标为3的静态变量
9 iload_1 // 将局部边量表里下标为1的int值压入到操作数栈中
10 invokevirtual #4 调用类常量池下标为4的成员方法
13 return // 返回void
```
idea安装`jclasslib`插件,查看对应字节码信息:
总览:
![](https://img.kancloud.cn/c8/dd/c8ddca3618f0d8189573d876a4d5aae0_1558x748.png)
main方法:
![](https://img.kancloud.cn/d4/84/d484532d8ee581f0fd702b37bfc1c15f_1734x770.png)
本地变量表:
![](https://img.kancloud.cn/d1/8e/d18e0b3ccac00de1fc89b14f5f3fb9ad_1772x734.png)
## 运行步骤粗画
![](https://img.kancloud.cn/d3/61/d361725d7a99b573f62a55387637cbf9_1994x1571.png)
- 面试突击
- Java虚拟机
- 认识字节码
- 000Java发展历史
- 000Macos10.15.7上编译OpenJDK8u
- 001熟悉Java内存区域
- 002熟悉HotSpot中的对象
- 003Java如何计算对象大小
- 004垃圾判定算法与4大引用
- 005回收堆和方法区中对象
- 006垃圾收集算法
- 007HotSpot虚拟机垃圾算法实现篇1
- 007HotSpot虚拟机垃圾算法实现篇2
- 007HotSpot虚拟机垃圾算法实现篇3
- 008垃圾收集器
- 009内存分配与回收策略
- 010Java虚拟机相关工具
- 011调优案例分析
- 012一次IDEA的启动速度调优
- 013类文件Class的结构
- 014熟悉字节码指令
- 015类加载机制(过程)
- 016类加载器
- IDEA的JVM参数
- Java基础
- Java自动装箱与拆箱
- Java基础数据类型
- Java方法的参数传递
- Java并发
- 001走入并行的世界
- 002并行程序基础
- 003熟悉Java内存模型JMM
- 004Java并发之volatile关键字
- 005线程池入门到精通
- 006Java多线程间的同步控制方法
- 007Java维基准测试框架JMH
- 008Java并发容器
- 009Java的线程实现
- 010Java关键字synchronized
- 011一些并行模式的熟悉
- 单例模式和不变模式
- 生产者消费者模式
- Future模式
- 012一些并行算法的熟悉
- 面试总结
- 长亮一面