-
jvm架構理解
image.png
-
jvm執(zhí)行流程
Java編譯成字節(jié)碼、動態(tài)編譯和解釋為機器碼的過程分析:
image.png
編譯器和解釋器的協(xié)調工作流程:
image.png
哪些是熱點代碼?
1、被多次調用的方法。
2、被多次執(zhí)行的循環(huán)體。
如何判斷熱點代碼?
這種統(tǒng)計方法實現(xiàn)復雜一些,需要為每個方法建立并維護計數(shù)器,而且不能直接獲取到方法的調用關系,但是它的統(tǒng)計結果相對更加精確嚴謹。
1、基于采樣的熱點探測
采用這種方法的虛擬機會周期性地檢查各個線程的棧頂,如果發(fā)現(xiàn)某些方法經(jīng)常出現(xiàn)在棧頂,那這個方法就是“熱點方法”。
這種探測方法的好處是實現(xiàn)簡單高效,還可以很容易地獲取方法調用關系(將調用堆棧展開即可),缺點是很難精確地確認一個方法的熱度,容易因為受到線程阻塞或別的外界因素的影響而擾亂熱點探測。
2、基于計數(shù)器的熱點探測
采用這種方法的虛擬機會為每個方法(甚至是代碼塊)建立計數(shù)器,統(tǒng)計方法的執(zhí)行次數(shù),如果執(zhí)行次
數(shù)超過一定的閥值,就認為它是“熱點方法”。
image.png
回邊計數(shù)器
它的作用就是統(tǒng)計一個方法中循環(huán)體代碼執(zhí)行的次數(shù),在字節(jié)碼中遇到控制流向后跳轉的指令稱為“回邊”。



