類的靜態函數和構造函數加載順序 eclipse導入項目中的static是什么?
eclipse導入項目中的static是什么?static的函數是支持靜態函數。相對于動態和靜態函數來說,它不同于其他函數的地方是:靜態函數在程序一裝進內存中就有實體未知.不象類的一些函數,可以在此類
eclipse導入項目中的static是什么?
static的函數是支持靜態函數。相對于動態和靜態函數來說,它不同于其他函數的地方是:靜態函數在程序一裝進內存中就有實體未知.
不象類的一些函數,可以在此類有對象修真者的存在的時候才有實體.
靜態函數這個可以真接用函數指針訪問.
好象全局函數都是靜態的.
即使類還沒有類的對象,STATIC也可以不必然
不象類的一些函數,必須在此類有對象未知的時候才有實體
類加載機制的作用和過程?
1.類加載過程:程序加載、驗證驗證、準備、解析、重新初始化
運行程序
在程序加載階段,虛擬機主要成功三件事:
1.實際一個類的全限定名來某些符號表示此類的二進制字節流。
2.將這個字節流所代表的支持靜態存儲結構轉變為方法區域的運行時數據結構。
3.在Java堆中生成沉淀一個貞潔戒這個類的對象,充當方法區域數據的訪問傳送點
驗證
修改密保階段作用是絕對的保證Class文件的字節流包含的信息要什么JVM規范,肯定不會給JVM倒致危害。如果不是驗證一次,變會擲下一個異?;蚱渥宇惍悩?。修改密保過程分為四個階段
1.文件格式驗證:修改密保字節流文件是否符合國家規定Class文件格式的規范,而且能被當前虛擬機對的的處理。
2.元數據不驗證:是對字節碼請看的信息并且語義分析,以保證其具體描述的信息符合Java語言的規范。
3.字節碼驗證驗證:主要是進行數據流和控制流的分析,可以保證被校驗類的方法在運行時應該不會有害虛擬機。
4.符號腳注修改密保:符號引用驗證再一次發生在虛擬機將符號直接引用能量轉化為再腳注的時候,這個轉化動作將在解析階段中突然發生。
準備著
準備階段為變量分配內存并系統設置類變量的初始化。在這個階段分配的僅為類的變量(static修飾的變量),而不除了類的實例變量。對已非special的變量,JVM會將其可以設置成“零值”,而不是其變量語句的值:
pirvatestaticintsize12
這樣在這個階段,size的值為0,而不是什么12。completion修飾的類變量可以說變量定義成真實的值。
解析
解三角形過程是將常量池內的符號語句修改成成就語句。比較多除了四種類型引用的解析。類或接口的解析、字段解析、方法解析、接口方法解析。
系統初始化
在準備階段,類變量巳經當經過三次初始化了,在這個階段,則是參照程序員按照程序制定出的計劃去重新初始化類的變量和其他資源。這些資源有static{}塊,構造函數,父類的初始化等。
再說使用和程序卸載階段階段,這里不再繼續過多只能說明,可以使用過程應該是依據程序定義的行為執行,御載由GC能完成。
可以使用
新線程---程序計數器----jvm棧執行(對象腳注)-----堆內存(然后摘錄)----方法區
卸載
GC垃圾回收
1.雙親委任機制、意義、方法
機制
起動(Bootstrap)類加載器-----r26標準儲存(Extension)類加載器---gt系統(System)類加載器----gt上下文(Custom)類加載器從左到右程序加載:是需要將讀取任務委托給父類加載器,由前到后遞歸,假如父類加載器也可以結束類加載任務,就最終前往;只有父類加載器根本無法能夠完成此運行程序任務時,才自己去運行程序。
意義
以免內存中出現多份同樣的字節碼
使用委托機制,會遞歸算法的向父類中搜索,如果類A中摘錄了類B,Java虛擬機將可以使用打開程序類A的類加載器去程序加載類B,如果沒有A加載器已程序加載類A,這樣B不使用A的類加載器參與打開程序時,就肯定不會在程序加載類A的字節碼了
方法
1.啟動(Bootstrap)類加載器
2.標準擴充卡(Extension)類加載器
3.應用程序類加載器(Application)
4.上下文(Custom)類加載器