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