idea中啓動一個java程序,在VM options指定 -XX:+PrintCompilation。之後啓動執行,會打印出java文件編譯後的樣子。
從左邊開始。
第一列是說明,虛擬機自啓動後所用的毫秒數。
接下來是代碼或方法執行的順序。
第三列可以看到有的是“s”,有的是“n”,有的乾脆啥也沒有。其中“s”代表的是synchronized方法,“n”代表的是本地方法。其中第三列還有一個“%”,“%”代表的是,這個方法以及本地編譯了,並且存放在內存中的一個叫代碼緩存的地方。
第四列中0-4的數字代表了進行那種類型編譯,“0”代表沒有編譯,“1”到“4”代表代碼層次越來越深。