欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

java代碼運(yùn)行原理,java編譯運(yùn)行原理

你知道java的運(yùn)行原理是什么嗎

Java這一語言的執(zhí)行過程也遵循這樣的過程:源代碼---機(jī)器碼。 但是,從源代碼到機(jī)器碼之間,究竟經(jīng)過什么樣的過程,則是Java獨(dú)一無二的了。寬泛地講,Java源代碼(.java)經(jīng)過java編譯器(javac.exe)編譯之后,并沒有直接轉(zhuǎn)化為機(jī)器碼,而是轉(zhuǎn)化成一種中間格式,成為字節(jié)碼(.class),字節(jié)碼再經(jīng)過java虛擬機(jī)轉(zhuǎn)化成特定CPU架構(gòu)的機(jī)器碼。也正是因?yàn)檫@一中間物,java才有所謂的跨平臺(tái)。在windows平臺(tái)上編譯好的字節(jié)碼,copy到linux平臺(tái)后,經(jīng)過為linux而設(shè)計(jì)的Java虛擬機(jī)解釋后即可執(zhí)行。跨平臺(tái)這一特征,是通過字節(jié)碼和JVM來實(shí)現(xiàn)的。

成都創(chuàng)新互聯(lián)長期為上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為寒亭企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),寒亭網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

因此,想搞清楚java程序到底是如何運(yùn)行的,重點(diǎn)在于弄明白字節(jié)碼是如何被轉(zhuǎn)化成跟CPU架構(gòu)相關(guān)的機(jī)器碼然后被執(zhí)行的。也就是要理解JVM到底是如何工作的。在了解JVM之前,我們再跳出來一下,先看看什么是虛擬機(jī)。所謂虛擬機(jī),我是這么理解的:用軟件的方式模擬出跟硬件類似的環(huán)境,比如說寄存器、存儲(chǔ)器等等。當(dāng)然,所有最終的工作還是由原來的CPU來完成。比如說VirtualBox這個(gè)虛擬機(jī)產(chǎn)品,它其實(shí)就是一個(gè)應(yīng)用程序,用某種編程語言編寫的應(yīng)用程序。當(dāng)運(yùn)行這個(gè)應(yīng)用程序時(shí),它會(huì)要求操作系統(tǒng)給它獨(dú)立施展手腳的空間:給我一些內(nèi)存,給我一定的CPU時(shí)間片,然后不用管我了。你可能會(huì)問,寄存器是硬件啊,它怎么能劃分啊,難道是時(shí)間劃分?不是的,像內(nèi)存這樣的硬件,可以給虛擬機(jī)一塊獨(dú)立的內(nèi)存塊,但是寄存器之后的,則需要用“模擬仿真”的方式來模擬。OK,回到Java虛擬機(jī)。到底什么是Java虛擬機(jī),很難有一個(gè)十分明確的定義,狹窄一點(diǎn)說,它就是一個(gè)應(yīng)用程序,大部分用C++編寫的。寬泛地說,它就是執(zhí)行字節(jié)碼的一整個(gè)環(huán)境。

java 運(yùn)行原理是什么?

java有一個(gè)垃圾回收機(jī)制,總是在內(nèi)存剩余大概5%才啟動(dòng),因?yàn)樗袛鄼?quán)限最高,它運(yùn)行,其他全部停止,因此,我們不希望垃圾回收機(jī)制頻繁啟動(dòng),那么就要控制內(nèi)存不要觸碰剩余5%底線。

而在普通JavaBeans系統(tǒng)中,每一次客戶端請求訪問時(shí),系統(tǒng)總是new一個(gè)javabeans或Java Class,如果并發(fā)訪問量很大,比如并發(fā)10人或100人,再加上你的系統(tǒng)復(fù)雜,有很多JavaBeans,假設(shè)有30個(gè),那么這下子100個(gè)并發(fā)請求來,就有3000個(gè)Java對象創(chuàng)建,然后下一批有來一次100個(gè)請求,這象潮水一樣。

每次請求產(chǎn)生的3000個(gè)對象會(huì)繼續(xù)占用內(nèi)存,不會(huì)被垃圾回收機(jī)制回收,因?yàn)槔厥諜C(jī)制只有等到內(nèi)存剩余5%才啟動(dòng),這樣,你的內(nèi)存無論多大,取決于訪問量,總會(huì)被耗光,最后垃圾回收出來收拾殘局,你的業(yè)務(wù)系統(tǒng)被暫停甚至緩慢。

所以,這里需要有資源控制,將內(nèi)存能夠控制住,不要被無限消耗,最后導(dǎo)致垃圾回收啟動(dòng),造成系統(tǒng)好像死機(jī)。

控制資源就是使用Pool或Cache來控制,Spring/JdonFramework下可自行加入; EJB已經(jīng)默認(rèn)加入了。

這也是我一直反對使用Jsp+JavaBeans來寫復(fù)雜或大訪問量的系統(tǒng),至于如何控制服務(wù)器資源,只有數(shù)據(jù)庫連接池是不夠的,因?yàn)锽ean才是真正的資源消耗重點(diǎn)。

如果你理論上屬于無知,又狂熱追求Spring這些新玩藝(當(dāng)初),那么,即使你使用Spring,性能還是和Jsp+JavaBeans一樣,在大訪問量情況下經(jīng)常死機(jī),因?yàn)镾pring里面需要手工配置Pool或Cache這些資源控制機(jī)制。

如果說Java比C方便,因?yàn)閷ο笫褂弥蟛恍枰謇恚敲从辛薎oc/DI依賴注射以后,Java中對象使用之前也不需要?jiǎng)?chuàng)建了。

spring 的好處,不用創(chuàng)建javabean對象了。

java程序運(yùn)行原理?

先編譯,利用java編譯器(JDK自帶的工具)把java文件轉(zhuǎn)換成字節(jié)碼文件(.class文件)

這個(gè)時(shí)候生成的字節(jié)碼也不是計(jì)算機(jī)能識別的,還要讓jvm也就是java虛擬機(jī)解讀,java虛擬機(jī)首先讀入字節(jié)碼、對字節(jié)碼進(jìn)行正確性檢查,針對客戶計(jì)算機(jī)平臺(tái)生成對應(yīng)的機(jī)器指令,由客戶機(jī)器執(zhí)行機(jī)器指令。

希望對你有幫助

java編程原理(簡單的說一下)

Java的編程原理 編譯原理: 先寫Java的源代碼。 然后交給虛擬機(jī) 虛擬機(jī)將其編譯為 字節(jié)碼 然后再進(jìn)行運(yùn)行。 Java的編譯后的字節(jié)碼,不是成為機(jī)器碼。它必須要求有編譯器在旁解釋。 它是解釋型編譯編程原理: Java 主要面向OOP, Java 面向?qū)ο缶幊陶Z言,基本上寫每個(gè)程序 都在面向整個(gè)世界的對象 而描寫,Java比你學(xué)過的C++ 更為靈活。比如接口、 或者你需要更多的答案。 請?zhí)釂?/p>

java運(yùn)行原理

Java實(shí)在”虛擬機(jī)“上進(jìn)行的編譯和運(yùn)行。

解釋:在Java中引入了虛擬機(jī)的概念,即在機(jī)器和編譯程序之間加入了一層抽象的虛擬的機(jī)器。這臺(tái)虛擬的機(jī)器在任何平臺(tái)上都提供給編譯程序一個(gè)的共同的接口。編譯程序只需要面向虛擬機(jī),生成虛擬機(jī)能夠理解的代碼,然后由解釋器來將虛擬機(jī)代碼轉(zhuǎn)換為特定系統(tǒng)的機(jī)器碼執(zhí)行。在Java中,這種供虛擬機(jī)理解的代碼叫做字節(jié)碼(ByteCode)(class文件的內(nèi)容),它不面向任何特定的處理器,只面向虛擬機(jī)。每一種平臺(tái)的解釋器是不同的,但是實(shí)現(xiàn)的虛擬機(jī)是相同的。Java源程序經(jīng)過編譯器編譯后變成字節(jié)碼,字節(jié)碼由虛擬機(jī)解釋執(zhí)行,虛擬機(jī)將每一條要執(zhí)行的字節(jié)碼送給解釋器,解釋器將其翻譯成特定機(jī)器上的機(jī)器碼,然后在特定的機(jī)器上運(yùn)行。

網(wǎng)站標(biāo)題:java代碼運(yùn)行原理,java編譯運(yùn)行原理
標(biāo)題路徑:http://chinadenli.net/article20/dsipdjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)全網(wǎng)營銷推廣動(dòng)態(tài)網(wǎng)站微信公眾號定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

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