查看java字节码
1 javac –verbose查看运行类是加载了那些jar文件
Foo.java演示:
package com.tfq.c02;
/**
*
* @description
* @author tangfq;
* @version 2020年6月7日 下午4:57:27
*
**/
public class Foo {
public static void main(String[] args) {
boolean isEte=true;
if(isEte){
System.out.println("eated");
}
if(true==isEte){
System.out.println("really eated");
}
}
}
使用javac -encoding utf-8 -verbose Foo.java,展示JVM加载类的顺序如下图:
可以看到虚拟机运行一个程序时加载的jar包
更多内容查看javac –help命令
2 javap查看字节码
首先使用javap –help可以查看到各种命令,各个命令什么作用,可以自己运行试试……
这里只测试javap –c和javap –verbose
javap –c Foo.java
可以查看字节码,从中可以得到各种变量的信息等等
但是javap –verbose可以看到更加清楚的信息。
总结:
编译生成class文件并查看类的加载顺序:javac -encoding utf-8 -verbose Singleton.java
生成class文件对应的JVM汇编代码文件:java -jar asmtools.jar jdis Singleton.class > Singleton.jasm.1