查看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