武漢千鋒Java技術(shù)培訓(xùn)學(xué)習(xí):java虛擬機(jī)Java技術(shù)博大精深,想要精通java技術(shù),單靠自己還是有很多的思想漏洞的,相反,很多人一起
武漢千鋒Java技術(shù)培訓(xùn)學(xué)習(xí):java虛擬機(jī)
Java技術(shù)博大精深,想要精通java技術(shù),單靠自己還是有很多的思想漏洞的,相反,很多人一起交流學(xué)習(xí)更容易將每一個技術(shù)知識然后多方位的進(jìn)行闡釋交流,也是學(xué)習(xí)快速增進(jìn)技術(shù)的好途徑。千鋒教育IT職業(yè)培訓(xùn)團(tuán)隊,技術(shù)分享之java虛擬機(jī)。
一.JAVA虛擬機(jī)的生命周期
一個運(yùn)行時的Java虛擬機(jī)實例的天職是:負(fù)責(zé)運(yùn)行一個java程序。當(dāng)啟動一個Java程序時,一個虛擬機(jī)實例也就誕生了。當(dāng)該程序關(guān)閉退出,這個虛擬機(jī)實例也就隨之消亡。如果同一臺計算機(jī)上同時運(yùn)行三個Java程序,將得到三個Java虛擬機(jī)實例。每個Java程序都運(yùn)行于它自己的Java虛擬機(jī)實例中。
在Java虛擬機(jī)內(nèi)部有兩種線程:守護(hù)線程和非守護(hù)線程。守護(hù)線程通常是由虛擬機(jī)自己使用的,比如執(zhí)行垃圾收集任務(wù)的線程。但是,Java程序也可以把它創(chuàng)建的任何線程標(biāo)記為守護(hù)線程。而Java程序中的初始線程——就是開始于main()的那個,是非守護(hù)線程。
只要還有任何非守護(hù)線程在運(yùn)行,那么這個Java程序也在繼續(xù)運(yùn)行。當(dāng)該程序中所有的非守護(hù)線程都終止時,虛擬機(jī)實例將自動退出。假若安全管理器允許,程序本身也能夠通過調(diào)用Runtime類或者System類的exit()方法來退出。
二.Java虛擬機(jī)的體系結(jié)構(gòu)
每個Java虛擬機(jī)都有一個類裝載子系統(tǒng),它根據(jù)給定的全限定名來裝入類型(類或接口)。同樣,每個Java虛擬機(jī)都有一個執(zhí)行引擎,它負(fù)責(zé)執(zhí)行那些包含在被裝載類的方法中的指令。
當(dāng)JAVA虛擬機(jī)運(yùn)行一個程序時,它需要內(nèi)存來存儲許多東西,例如:字節(jié)碼、從已裝載的class文件中得到的-信息、程序創(chuàng)建的對象、傳遞給方法的參數(shù),返回值、局部變量等等。Java虛擬機(jī)把這些東西都組織到幾個“運(yùn)行時數(shù)據(jù)區(qū)”中,以便于管理。
某些運(yùn)行時數(shù)據(jù)區(qū)是由程序中所有線程共享的,還有一些則只能由一個線程擁有。每個Java虛擬機(jī)實例都有一個方法區(qū)以及一個堆,它們是由該虛擬機(jī)實例中所有的線程共享的。當(dāng)虛擬機(jī)裝載一個class文件時,它會從這個class文件包含的二進(jìn)制數(shù)據(jù)中解析類型信息。然后把這些類型信息放到方法區(qū)中。當(dāng)程序運(yùn)行時,虛擬機(jī)會把所有該程序在運(yùn)行時創(chuàng)建的對象都放到堆中。
當(dāng)每一個新線程被創(chuàng)建時,它都將得到它自己的PC寄存器(程序計數(shù)器)以及一個Java棧,如果線程正在執(zhí)行的是一個Java方法(非本地方法),那么PC寄存器的值將總是指向下一條將被執(zhí)行的指令,而它的Java棧則總是存儲該線程中Java方法調(diào)用的狀態(tài)——包括它的局部變量,被調(diào)用時傳進(jìn)來的參數(shù)、返回值,以及運(yùn)算的中間結(jié)果等等。而本地方法調(diào)用的狀態(tài),則是以某種依賴于具體實現(xiàn)的方法存儲在本地方法棧中,也可能是在寄存器或者-某些與特定實現(xiàn)相關(guān)的內(nèi)存區(qū)中。
更多的技術(shù)交流。歡迎加入我們千鋒團(tuán)隊,不管你是小白還是技術(shù)大神,都可以參與我們的技術(shù)交流,一起學(xué)習(xí),一起進(jìn)步。交流群:343013298
千鋒武漢校區(qū):http://wh.mobiletrain.org
武漢校區(qū)地址:武漢市光谷大道61號智慧園21號樓2層
培訓(xùn)咨詢專線:027-65523826 4008119990
咨 詢 QQ : 1660794050
面授課程:全棧HTML5+培訓(xùn)、UI交互設(shè)計培訓(xùn)、PHP培訓(xùn)、Java+云數(shù)據(jù)培訓(xùn)、大數(shù)據(jù)開發(fā)培訓(xùn)、VR/AR/Unity游戲開發(fā)培訓(xùn)、Python培訓(xùn)、Linux云計算培訓(xùn)、全棧軟件測試培訓(xùn)、Android培訓(xùn)、iOS培訓(xùn)
武漢千鋒Java技術(shù)培訓(xùn)學(xué)習(xí):java虛擬機(jī)