這篇文章主要介紹了java的編譯運(yùn)行方式是什么,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供平武企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、html5、小程序制作等業(yè)務(wù)。10年已為平武眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。不同于C/C++語(yǔ)言編譯后可以直接生成CPU所能理解的代碼格式,俗稱(chēng)機(jī)器碼,Java則將代碼編譯成虛擬機(jī)可執(zhí)行的字節(jié)碼。Java虛擬機(jī)可以由硬件實(shí)現(xiàn),也可以根據(jù)不同平臺(tái)(Windows,Linux,Mac等)由軟件來(lái)實(shí)現(xiàn)。這么做的好處在于,一旦Java代碼被編譯成字節(jié)碼,它變可以在不同的虛擬機(jī)平臺(tái)上運(yùn)行,這就是我們經(jīng)常說(shuō)的“一次編譯,到處運(yùn)行”。除此之外,虛擬機(jī)還提供了諸如托管環(huán)境、數(shù)組越界、動(dòng)態(tài)類(lèi)型、安全權(quán)限等動(dòng)態(tài)檢測(cè),使我們能夠更加關(guān)注業(yè)務(wù)邏輯的開(kāi)發(fā)。
Java虛擬機(jī)
從虛擬機(jī)的角度來(lái)看,執(zhí)行Java代碼首先需要將它編譯而成的class文件加載到Java虛擬機(jī)中。加載后的Java類(lèi)會(huì)被存放于方法區(qū)中。Java虛擬機(jī)將運(yùn)行時(shí)內(nèi)存區(qū)域劃分為五個(gè)部分,分別為方法區(qū)、堆、PC寄存器、Java方法棧和本地方法棧。
Java運(yùn)行過(guò)程
在運(yùn)行過(guò)程中,每當(dāng)調(diào)用進(jìn)入一個(gè)Java 方法,Java虛擬機(jī)會(huì)在當(dāng)前線程的Java方法棧中生成一個(gè)棧幀,泳衣保存局部變量及字節(jié)碼的操作數(shù)。這個(gè)幀的大小是提前計(jì)算好的,而且Java虛擬機(jī)不要求棧的內(nèi)存是連續(xù)的。當(dāng)退出方法時(shí),不管是正常還是異常返回,Java虛擬機(jī)都會(huì)彈出當(dāng)前幀并拋棄。從硬件的角度來(lái)看,Java字節(jié)碼無(wú)法直接運(yùn)行,因而Java虛擬器需要將字節(jié)碼翻譯成CPU能夠識(shí)別的機(jī)器碼。
上述翻譯過(guò)程有兩種情況:第一種是解釋執(zhí)行,即逐條將字節(jié)碼翻譯成機(jī)器碼并執(zhí)行;第二種是即時(shí)編譯(Just-In-Time compilation, JIT),將一條方法中的所有字節(jié)碼翻譯成機(jī)器碼后再執(zhí)行。
前者的優(yōu)勢(shì)在于無(wú)需等待編譯,后者的優(yōu)勢(shì)在于實(shí)際運(yùn)行速度更快。Java虛擬機(jī)為了實(shí)現(xiàn)更快的運(yùn)行速度,通常兩種方式都會(huì)采用,即混合模式,綜合兩者的優(yōu)點(diǎn)。即時(shí)編譯技術(shù)建立在二八定律的理論基礎(chǔ)上的,即百分之二十的代碼占用了百分之八十的計(jì)算資源。針對(duì)大部分的不常用代碼采用解釋執(zhí)行,對(duì)于少部分常用的代碼采用即時(shí)編譯,已達(dá)到理性的運(yùn)行速度。
在計(jì)算資源充足的情況下,字節(jié)碼的解釋執(zhí)行和即時(shí)編譯和同時(shí)運(yùn)行。一旦編譯完成之后,下次可替換解釋執(zhí)行,直接運(yùn)行機(jī)器代碼。總的來(lái)說(shuō)Java代碼的執(zhí)行效率,跟虛擬機(jī)的配置和運(yùn)行方式有很大關(guān)系,針對(duì)Java虛擬機(jī)的優(yōu)化可以有效的提高代碼的運(yùn)行效率。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享java的編譯運(yùn)行方式是什么內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問(wèn)題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!
新聞名稱(chēng):java的編譯運(yùn)行方式是什么-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)URL:http://m.rwnh.cn/article30/doehpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、標(biāo)簽優(yōu)化、動(dòng)態(tài)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、虛擬主機(jī)、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容