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