Java虛擬機示意圖
例子 -XX:MaxPermSize=512m -Xms256M -Xmx512M -XX:PermSize=256m
介紹幾個常用的配置選項
類加載過程
類加載機制是雙親委派機制
雙親委派機制避免了一個類被多次加載。
類裝載過程
初始化時機
主動初始化的6種方式
創建對象實例:new 對象的時候,會依法類的初始化,前提這個類沒有被初始化調用類的靜態屬性或為靜態屬性賦值調用類的靜態方法通過class 文件反射創建對象。初始化一個類的子類:使用子類的時候先初始化父類Java虛擬機啟動時被標記為啟動類的類:比如main方法所在的類不會進行初始化的情況
在同一個類加載器下面只能初始化類一次,如果一斤初始化了就不必要初始化了。在編譯的時候能確定下來的靜態變量(編譯常量),不會對類進行初始化。比如final 修飾的靜態變量。類的實例化的初始化步驟
沒有父類的情況
類的靜態屬性類的靜態代碼塊類的非靜態屬性類的非靜態代碼塊構造方法有父類的情況
父類的靜態屬性父類的靜態代碼塊子類的靜態屬性子類的靜態代碼塊父類的非靜態屬性父類的非靜態代碼塊父類構造方法子類非靜態屬性子類非靜態代碼塊子類構造方法在多次類實例化中,類靜態屬性和方法只會實例化一次,也就是執行一次