真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JavaJVM虛擬機(jī)是如何運(yùn)行的

本篇文章為大家展示了Java JVM虛擬機(jī)是如何運(yùn)行的,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

10余年的孝義網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷(xiāo)的優(yōu)勢(shì)是能夠根據(jù)用戶(hù)設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整孝義建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“孝義網(wǎng)站設(shè)計(jì)”,“孝義網(wǎng)站推廣”以來(lái),每個(gè)客戶(hù)項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

一:JVM基礎(chǔ)概念

         JVM(Java虛擬機(jī))一種用于計(jì)算設(shè)備的規(guī)范,可用不同的方式(軟件或硬件)加以實(shí)現(xiàn)。編譯虛擬機(jī)的指令集與編譯微處理器的指令集非常類(lèi)似。Java虛擬機(jī)包括一套字節(jié)碼指令集、一組寄存器、一個(gè)棧、一個(gè)垃圾回收堆和一個(gè)存儲(chǔ)方法域。

         Java虛擬機(jī)(JVM)是可運(yùn)行Java代碼的假想計(jì)算機(jī)。只要根據(jù)JVM規(guī)格描述將解釋器移植到特定的計(jì)算機(jī)上,就能保證經(jīng)過(guò)編譯的任何Java代碼能夠在該系統(tǒng)上運(yùn)行。

下面看下Jvm的體系結(jié)構(gòu)圖:

Java JVM虛擬機(jī)是如何運(yùn)行的

二:解釋型語(yǔ)言和編譯型語(yǔ)言的聯(lián)系與區(qū)別。

編譯型語(yǔ)言是通過(guò)編譯器將程序編譯成目標(biāo)機(jī)器所能識(shí)別的機(jī)器碼,而解釋型語(yǔ)言不需要編譯過(guò)程,由該語(yǔ)言的解釋器讀取腳本,按照語(yǔ)法規(guī)則進(jìn)行解釋?zhuān)缓笳{(diào)用解釋器內(nèi)建的命令(或者庫(kù)函數(shù))。例如,C語(yǔ)言的printf()函數(shù)經(jīng)過(guò)靜態(tài)編譯后,printf()所需的所以代碼都以機(jī)器碼的形式寫(xiě)入可執(zhí)行文件中,shell在執(zhí)行程序時(shí),在指定路徑搜索該文件,然后加載器(Loader)加載該程序的ELF文件到內(nèi)存中,跳轉(zhuǎn)到程序入口,將控制權(quán)交由該程序。

動(dòng)態(tài)編譯的情況有些不同。由于printf()是很常用的函數(shù),系統(tǒng)將常用函數(shù)集中起來(lái)做成庫(kù),當(dāng)我寫(xiě)一個(gè)Myprintf()函數(shù)時(shí)調(diào)用printf() 時(shí),動(dòng)態(tài)編譯后形成的ELF文件不會(huì)包含printf()相關(guān)的代碼,但是會(huì)有些信息告訴系統(tǒng):“我的程序?qū)?huì)調(diào)用printf(),因此我需要printf()的地址”。加載ELF文件后,首先運(yùn)行動(dòng)態(tài)連接器(ldd),ldd知道程序依賴(lài)的動(dòng)態(tài)庫(kù),系統(tǒng)中如果沒(méi)有加載該動(dòng)態(tài)庫(kù),就會(huì)通知系統(tǒng)加載該庫(kù),并把庫(kù)函數(shù)的入口地址綁定到程序需要的地方,然后跳轉(zhuǎn)到程序入口地址,開(kāi)始運(yùn)行程序。這里,我們所寫(xiě)的程序一經(jīng)編譯,就變成特定機(jī)器的機(jī)器碼和一些附屬信息(符號(hào)表,地址,變量值等),然后通過(guò)系統(tǒng)加載運(yùn)行機(jī)制就變成“動(dòng)態(tài)程序”——進(jìn)程。

解釋型語(yǔ)言的執(zhí)行過(guò)程離不開(kāi)解釋器,python,perl,ruby等等。所以腳本的第一行一般是#/usr/bin/×××?!痢痢链砹烁髡Z(yǔ)言相應(yīng)的解釋器。腳本一般由表達(dá)式(expression)和Block of expressions組成,解釋器首先要做的就是分析并理解表達(dá)式結(jié)構(gòu),形成“執(zhí)行序列”。這個(gè)“執(zhí)行序列”是中立的,不針對(duì)任何native machine,所以“可移植性”高。這里不用“字節(jié)碼”代替“執(zhí)行序列”是考慮到在jvm中有字節(jié)碼的概念,他們之間有顯著的不同。決定執(zhí)行序列是解釋器最主要的作用。假設(shè),python輸出的函數(shù)為python_print(),那么python解釋器在“解釋”腳本時(shí)遇到這個(gè)表達(dá)式就將調(diào)用系統(tǒng)的print()函數(shù)執(zhí)行輸出操作。你也可以把腳本理解成高級(jí)配置文件,這個(gè)文件指導(dǎo)python解釋器如何運(yùn)行,解釋器內(nèi)部已經(jīng)制訂了“如何”運(yùn)行的若干規(guī)則。

三:Java的執(zhí)行過(guò)程

JVM執(zhí)行Java程序要比上述兩個(gè)復(fù)雜,因?yàn)樗呀?jīng)被稱(chēng)作machine了。下圖是JVM的結(jié)構(gòu)框圖。主要包含:垃圾回收器,類(lèi)加載子系統(tǒng),執(zhí)行引擎,運(yùn)行時(shí)數(shù)據(jù)區(qū)等。

上述內(nèi)容就是Java JVM虛擬機(jī)是如何運(yùn)行的,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當(dāng)前文章:JavaJVM虛擬機(jī)是如何運(yùn)行的
URL分享:http://weahome.cn/article/pssshs.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部