1. 程式人生 > 遊戲 >《迪士尼:競速風暴》預告公佈 夏季登陸NS平臺

《迪士尼:競速風暴》預告公佈 夏季登陸NS平臺


1、JVM 和 類

(1)執行java命令: java 帶有main方法的類名

■ 命令的作用:啟動jvm,並載入位元組碼,執行程式

  • 當呼叫java命令來執行某個java程式時,該命令將會啟動一個jvm程序(同一個jvm中的所有執行緒變數都處於處於同一個程序中,共享給jvm的記憶體區間。)
  • 每次啟動一個程式,在工作管理員,就會出現一個程序

(2)jvm退出的情況(jvm程序一旦結束,該程序中記憶體中的資料會丟失):

  • 程式正常執行結束
  • 使用System.exit(0) 方法
  • 出現異常,沒有捕獲異常
  • 平臺強制結束jvm程序(在工作管理員那裡關閉掉java程序)



2、類載入機制:

(1) 將類載入進記憶體中(三個步驟:載入、連線、初始化)

■ 當程式主動使用到某個類時,若該類還沒有被載入進記憶體中,則系統會通過載入、連線、初始化三個步驟對該類就那些初始化操作。
  • 在程式中,每次要用到某類,都是需要將該類載入進內容的(將類載入進記憶體包括了三個步驟:載入、連線、初始化
  • 解除安裝類:當虛擬機器停止工作的時候,該類就從虛擬機器中解除安裝了
  • 類載入進虛擬機器的特點當類一旦載入進虛擬機器,就不解除安裝,永駐記憶體,直到虛擬機器停止工作。



(2) 類載入機制【載入、連線、初始化、使用、解除安裝】:

1)類的載入:是指將類的class檔案(位元組碼檔案)載入記憶體之中,併為之建立一個java.lang.Class物件【位元組碼物件

  • 萬物皆物件,描述物件的類也是一種物件,我們使用java.lang.Class物件【位元組碼物件】來描述類這種物件。
□ 類的載入過程是由類載入器(ClassLoader)完成,類載入器通常是由jvm提供的,我們稱之為系統類載入器,我們也可以自定類載入器(需要繼承ClassLoader類)
  • 不同的類載入器可以實現載入本地位元組碼檔案,jar包中的位元組碼,通過網路載入位元組碼等等。
□ 為什麼已經有系統自帶的類載入器,還需要自定義的類載入器?(載入方式不符合需求)
  • 當我們使用框架時,需要載入配置檔案時,通過系統載入器的載入方式無法載入配置檔案,需要自定義類載入器,重新去定義載入方式。

2) 類的連線:當類被載入進記憶體之後,系統為之生產了一個對應的Class物件【位元組碼物件】,接著把類的二進位制資料合併到JRE中。

  • 驗證:檢測被載入的類是否有正確的內部結構。
  • 準備:負責為類的static變數分配記憶體,並設定預設值。
  • 解析:把類的二進位制資料中的符號引用替換為直接引用。

3)類的初始化:在此階段,jvm負責對類進行初始化,主要就是對static變數進行初始化。

類的初始化包含如下幾個步驟:

  • 當類還沒被載入和連線,則程式先載入並連線該類
  • 當該類的父類還沒有被初始化,則先初始化其父類
  • 當類中有初始化語句(靜態程式碼塊---一般用來載入資源),則系統依次執行這些初始化語句



✿ (3) 總結類的載入機制:

■ 程式需要執行某個類,需要將類載入進記憶體,系統為該類建立位元組碼物件,然後進行初始化,再使用,最後解除安裝。

類載入進虛擬機器的特點當類一旦載入進虛擬機器,就不解除安裝,永駐記憶體,直到虛擬機器停止工作。