您好,登錄后才能下訂單哦!
Java虛擬機運行時數據區,分為以下幾個模塊,包含所有線程共有的數據區和線程單獨享有的數據區。
JVM通過根搜索算法來判定對象是否可以回收,一般對于不能從根(GC Roots)搜索到的對象是可以被回收的。
能夠被作為GC Roots對象有:虛擬機棧本地變量表中引用的對象(也就是正在調用的方法中引用的);方法區中靜態屬性或常量引用的對象;本地方法棧引用的對象。
可以被回收的對象并不一定絕對被回收,JVM先做一次標記和篩選,把那些覆蓋了finalize方法的對象篩選出來然后觸發finalize方法,如果在finalize方法中對象復活,則不回收,否則回收,且finalize方法僅會被觸發一次。
垃圾回收算法
內存分配與回收策略
class文件是二進制組成的,class有兩種數據類型:無符號數和表。
無符號數是基礎數據類型,其中u1表示1個字節、u2表示2個字節(一個字節8個bit,而4個bit可以表示1個16進制的數,也就是說1個字節可以用2個16進制數表示);
表是由多個無符號數或其它表構成的。
類加載的時機
主動引用的幾種情況才會加載(前提是此類沒有被加載過)
被動引用不會觸發初始化
加載過程
連接過程
初始化過程
初始化過程主要是執行類構造器<cinit>方法
類加載器
運行時棧幀結構
方法調用和分派
JMM規定所有內存都存儲于主內存中,每條線程還有自己的工作內存。
變量的讀取、賦值操作必須在工作內存中進行。
內存直接的交互操作,主要有以下8種操作:
8種操作需要滿足以下規則
volatile關鍵字
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。