標籤:詳細 tail javap ongl bytecode rbo .net nal 靜態
java位元組碼速查筆記 發表於 2018-01-27 | 閱讀次數: 0 | 字數統計: | 閱讀時間長度 ≈執行原理
java檔案到通過編譯器編譯成java位元組碼檔案(也就是.class檔案),這個過程是java編譯過程;而我們的java虛擬機器執行的就是位元組碼檔案。不論該位元組碼檔案來自何方,由哪種編譯器編譯,甚至是手寫位元組碼檔案,只要符合java虛擬機器的規範,那麼它就能夠執行該位元組碼檔案
位元組碼學習好文
- http://blog.csdn.net/shenhonglei1234/article/details/54861958
IDEA配置快速查看java位元組碼
- http://www.jianshu.com/p/252f381a6bc4 位元組碼基礎學習筆記
- http://ifeve.com/javacode2bytecode/ 比較詳細
查看位元組碼 (以HelloWorld檔案為執行個體)
- javac –verbose查看運行類是載入了那些jar檔案
javac –verbose HelloWorld.java
可以看到虛擬機器編譯時間做了那些事情……
- j
ava –verbose HelloWorld
可以看到虛擬機器運行一個程式時載入的jar包
更多內容查看javac –help命令
- javap查看位元組碼
首先使用javap –help可以查看到各種命令,各個命令什麼作用,可以自己運行試試……
這裡只測試javap –c和javap –verbose
javap –c HelloWorld 可以查看位元組碼,從中可以得到各種變數的資訊等等
但是javap –verbose可以看到更加清楚的資訊
簡單的執行原理
iload_1 整形壓棧 同理
float_1 是浮點型壓棧
if_icmple 7 如何棧頂參數1<=2的值 則調到第7行
- 被final修飾的變數我們稱之為常量,在類檔案中我們標識為ACC_FINAL。
- 靜態變數的標誌
flags: ACC_PUBLIC, ACC_STATIC
java位元組碼速查筆記