久久久久久久久久久久久久久久久久网,玩弄放荡人妇系列av在线网站,人妻伊人,午夜一区二区国产好的精华液,久久久久丫

快速認(rèn)識Java虛擬機(jī)參數(shù) 存儲程序的類文件

來源:米粒教育時(shí)間:2020-12-09 11:07:15

Java虛擬機(jī)也是一個(gè)可運(yùn)行的程序,它或者全部用軟件方式來實(shí)現(xiàn),或者采用硬件或軟件結(jié)合的方式來實(shí)現(xiàn)。當(dāng)啟動一個(gè)Java程序時(shí),就會運(yùn)行一個(gè)Java虛擬機(jī),每個(gè)Java程序都會對應(yīng)一個(gè)Java虛擬機(jī),運(yùn)行中的Java虛擬機(jī),也可以稱為Java虛擬機(jī)的一個(gè)實(shí)例。Java程序運(yùn)行結(jié)束關(guān)閉后,運(yùn)行這個(gè)程序的Java虛擬機(jī)也會關(guān)閉。例如,如果在電腦運(yùn)行了三個(gè)Java程序,就會有三個(gè)Java虛擬機(jī)在運(yùn)行。

java程序與虛擬機(jī)實(shí)例關(guān)系圖

每個(gè)Java程序的主類都會有一個(gè)main()方法,虛擬機(jī)啟動Java程序時(shí),它會調(diào)用主類的main()方法作為Java程序的入口,這個(gè)main()方法的訪問權(quán)限必須是public,并且是無返回值的靜態(tài)方法,方法的參數(shù)是一個(gè)String類型的數(shù)組。

下面是HelloWorld程序代碼:

HelloWorld程序只有一個(gè)HelloWorld類,HelloWorld類內(nèi)部必須有一個(gè)main()方法,當(dāng)HelloWorld程序運(yùn)行時(shí),虛擬機(jī)會調(diào)用HelloWorld類的main()方法作為HelloWorld程序的入口。

在Windows命令行窗口運(yùn)行HelloWorld程序的命令如下:

java HelloWorld

其中“java”就是虛擬機(jī)程序名稱,Windows會啟動一個(gè)虛擬機(jī)實(shí)例,“java”后面的“HelloWorld”是包含main()方法已編譯的class文件名稱,虛擬機(jī)啟動后,會加載HelloWorld.class文件到內(nèi)存,并調(diào)用HelloWorld.class文件內(nèi)的main()方法,HelloWorld程序進(jìn)入運(yùn)行狀態(tài),main()方法內(nèi)部的語句會得到執(zhí)行,當(dāng)main()方法內(nèi)部的所有語句都執(zhí)行完成后,main方法返回,HelloWorld程序結(jié)束,運(yùn)行這個(gè)HelloWorld程序的虛擬機(jī)實(shí)例也會退出。

虛擬機(jī)的體系結(jié)構(gòu)

虛擬機(jī)由類加載器、運(yùn)行數(shù)據(jù)區(qū)、執(zhí)行引擎、本地方法接口、本地方法庫組成。虛擬機(jī)體系結(jié)構(gòu)如下圖所示:

當(dāng)虛擬機(jī)運(yùn)行一個(gè)程序時(shí),它會使用類加載器加載Java程序的類文件,并且在計(jì)算機(jī)內(nèi)申請一塊內(nèi)存區(qū)域,作為運(yùn)行數(shù)據(jù)區(qū)。用來存儲程序的類文件、創(chuàng)建的靜態(tài)對象和實(shí)例對象、方法、局部變量、中間結(jié)果、方法的返回值等內(nèi)容。為了管理和有效地利用已申請的內(nèi)存區(qū)域,虛擬機(jī)把內(nèi)存劃分為堆、棧、方法區(qū)、程序計(jì)數(shù)器、本地方法棧。

運(yùn)行數(shù)據(jù)區(qū)的方法區(qū)存儲了包含程序使用import語句導(dǎo)入的JDK類庫在內(nèi)的類信息、各種常量、靜態(tài)變量、代碼編譯后的字節(jié)碼等內(nèi)容;本地方法棧用來存儲調(diào)用非java代碼編寫的方法(Native Method)使用到的數(shù)據(jù),這些方法包括用其它語言編寫的第三方庫和操作系統(tǒng)自身提供的API;堆用來存儲程序中動態(tài)創(chuàng)建的類實(shí)例對象;棧用來存儲程序調(diào)用方法過程中,使用到的參數(shù)、局部變量、中間結(jié)果、返回值等內(nèi)容;程序計(jì)數(shù)器用來存儲當(dāng)前程序執(zhí)行的指令(指令可以理解為類中的可執(zhí)行代碼)。

執(zhí)行引擎負(fù)責(zé)執(zhí)行方法區(qū)中的字節(jié)碼,在執(zhí)行字節(jié)碼的過程中會在堆中創(chuàng)建實(shí)例對象,在棧中存取當(dāng)前方法調(diào)用的參數(shù)、局部變量、中間結(jié)果、返回值等,也會通過本地方法接口調(diào)用第三方庫方法和操作系統(tǒng)自身提供的API。

責(zé)任編輯:FD31
上一篇:最新消息!南充過境高速公路嘉陵江特大橋進(jìn)入樁基建設(shè)階段
下一篇:最后一頁

信用中國

  • 信用信息
  • 行政許可和行政處罰
  • 網(wǎng)站文章