久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

如何讓java代碼JIT java怎么操作

如何控制JVM中的JIT行為

jvm的其中之一作用便是你說(shuō)的執(zhí)行class文件。而jvm中,執(zhí)行class文件有兩種方式,一種是傳統(tǒng)的解釋型,即一邊翻譯一邊執(zhí)行,翻譯一句話成本地指令之后馬上執(zhí)行,然后回頭再翻譯下一句話,再執(zhí)行下一句話,這是傳統(tǒng)方式,從這里就可以知道為什么大家都叫java為解釋型的語(yǔ)言了吧。第二種方式就是你說(shuō)的,jvm中利用jit進(jìn)行對(duì)class文件二次編譯,這次編譯就會(huì)直接編譯成系統(tǒng)本地指令,這樣再去運(yùn)行的時(shí)候就快了吧,但是一開始的jit是比較弱智的,他會(huì)將你所有class代碼都統(tǒng)統(tǒng)在運(yùn)行時(shí)編譯成本地指令,大家知道編譯是非常耗時(shí)的啊,這種運(yùn)行時(shí)編譯和c++的靜態(tài)編譯不同,c++是在系統(tǒng)運(yùn)行之前,就已經(jīng)將所有的代碼都編譯成本地代碼了,所有在運(yùn)行時(shí)候是沒有編譯損耗的,運(yùn)行時(shí)編譯也叫做即時(shí)編譯,這兩種編譯方式有好有壞,靜態(tài)編譯運(yùn)行速度快,但是無(wú)法做到跨,運(yùn)行時(shí)編譯可跨,但是運(yùn)行速度慢,所以到后來(lái)sun推出hotspot,出現(xiàn)了動(dòng)態(tài)編譯,即不是將所有代碼都編譯成本地指令了,而是將你系統(tǒng)常常運(yùn)行的那塊代碼編譯成指令而已。所以最后總結(jié)下,jvm的excution engine對(duì)待class的處理有兩種方式,一種是解釋執(zhí)行,一種是動(dòng)態(tài)即時(shí)編譯執(zhí)行。

創(chuàng)新互聯(lián)公司是專業(yè)的瀏陽(yáng)網(wǎng)站建設(shè)公司,瀏陽(yáng)接單;提供做網(wǎng)站、網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行瀏陽(yáng)網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

如何在Android上編寫高效的Java代碼

比較Android上的Dalvik Java和Java SE

雖然遠(yuǎn)在Android出現(xiàn)之前,開發(fā)者就能用Java編程語(yǔ)言為移動(dòng)設(shè)備編寫應(yīng)用程序,但它只是Java中功能極為有限的一個(gè)版本,稱為Java ME(微型版)。不同的移動(dòng)設(shè)備還需編寫不同的代碼,因此,寫一個(gè)應(yīng)用程序就能在支持Java ME的任何手機(jī)上運(yùn)行是幾乎不可能的。此外,由于當(dāng)時(shí)不存在很好的在線商店,應(yīng)用發(fā)布過(guò)程極其復(fù)雜。

Android的問(wèn)世為開發(fā)者提供了構(gòu)建智能手機(jī)強(qiáng)大應(yīng)用的機(jī)會(huì),開發(fā)者只需用Java編程語(yǔ)言以及他們熟知的標(biāo)準(zhǔn)Java API編寫代碼。然而,盡管Android開發(fā)者仍使用Java SE編譯器來(lái)編譯應(yīng)用程序,你會(huì)發(fā)現(xiàn),James Gosling開發(fā)的Java和Android設(shè)備上的Java存在許多不同之處。

在Android設(shè)備上運(yùn)行的VM(虛擬機(jī))稱為Dalvik。它最初由谷歌的Dan Bornstein開發(fā),適用于CPU和內(nèi)存受限的移動(dòng)設(shè)備。Java SE和Dalvik Java存在一些差異,主要體現(xiàn)在虛擬機(jī)上。Java SE使用了棧機(jī)設(shè)計(jì),而Dalvik被設(shè)計(jì)成了基于寄存器的機(jī)器。Android SDK中有一個(gè)dx工具,它會(huì)把Java SE棧機(jī)器的字節(jié)碼轉(zhuǎn)換成基于寄存器的Dalvik機(jī)器字節(jié)碼,該轉(zhuǎn)換步驟由IDE自動(dòng)完成。

基于棧的虛擬機(jī)和基于寄存器的虛擬機(jī)的定義以及差異將不列入討論范圍。由于歷史原因,Android使用基于寄存器的虛擬機(jī)。雖然基于寄存器的虛擬機(jī)最多可以比基于棧的虛擬機(jī)快32%,但這只限于執(zhí)行時(shí)解釋字節(jié)碼的虛擬機(jī)(也就是說(shuō),解釋型虛擬機(jī))。在Android 2.2版本(也稱為Froyo)之前,Dalvik虛擬機(jī)都是純解釋型的。Froyo版本引入了JIT編譯器(即時(shí)編譯),這是Java SE很早就有的一個(gè)優(yōu)勢(shì)。

JIT編譯,也稱為動(dòng)態(tài)翻譯。它在執(zhí)行前把字節(jié)碼翻譯成本機(jī)代碼(如圖1所示),這樣主要有兩個(gè)好處。首先,它消除了那些純解釋型虛擬機(jī)的開銷;其次,它能對(duì)本機(jī)代碼執(zhí)行優(yōu)化,這通常是靜態(tài)編譯代碼無(wú)法做到的。例如,JIT編譯器可以在它運(yùn)行的CPU上選擇最合適的優(yōu)化,也可以根據(jù)應(yīng)用程序的輸入來(lái)分析代碼是如何運(yùn)行的,以便進(jìn)行下一步的優(yōu)化

java中的JIT編譯到底是什么意思?

在JIT編譯器生成本機(jī)代碼后,它會(huì)重寫存根例程,插入一個(gè)jmp指令跳轉(zhuǎn)到剛才JIT編譯器的代碼。只有當(dāng)要調(diào)用某個(gè)方法時(shí),JIT編譯器才會(huì)將CIL的方法體編譯為相應(yīng)的本機(jī)機(jī)器碼版本。這樣可以優(yōu)化程序的工作集。

分享文章:如何讓java代碼JIT java怎么操作
網(wǎng)站路徑:http://sd-ha.com/article44/hhesee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、營(yíng)銷型網(wǎng)站建設(shè)、電子商務(wù)、動(dòng)態(tài)網(wǎng)站外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站維護(hù)

廣告

聲明:本網(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)

網(wǎng)站優(yōu)化排名