:湖南長沙北大青鳥長沙大計教育,成立于2006年,湖南長沙IT學(xué)校排名領(lǐng)先品牌,學(xué)校依托了北京大學(xué)雄厚的技術(shù)資源,專注于職業(yè)教育,也是我國中南地區(qū)Java軟件工程師的人才搖籃。 初高中生班,大專本科班全面招生中 長沙北大青鳥大計教育就在杜鵑路 北大青鳥長沙校區(qū)選長沙大計教育,選學(xué)一門,學(xué)通學(xué)透,求學(xué)電話:4008-0731-86" />

国产99福利精品视频|杨幂精品国产福利在线|国精品午夜福利视频不卡|欧美精品黄网站在线播放|精品国产乱码久久久久久久|国产大片中文字幕在线观看|国产肥熟女视频一区二区三区|国产乱码无码视频一区二区三区

長沙市北大青鳥學(xué)校,java虛擬機(jī) JVM詳解 內(nèi)部原理 (小白必看)

來源:長沙北大青鳥大計教育|發(fā)布時間:2020-07-19 18:23:25

長沙北大青鳥哪家最好,北大青鳥長沙分校


北大青鳥長沙分校,長沙北大青鳥學(xué)?煽繂


長沙北大青鳥學(xué)校可靠嗎,長沙北大青鳥學(xué)校怎么樣


長沙北大青鳥學(xué)校怎么樣,長沙北大青鳥學(xué)費一覽表


長沙北大青鳥學(xué)費一覽表,長沙北大青鳥哪家最好


長沙北大青鳥哪家最好,北大青鳥長沙分校


北大青鳥長沙分校,長沙北大青鳥學(xué)?煽繂


長沙北大青鳥學(xué)?煽繂,長沙北大青鳥學(xué)校怎么樣


摘要:湖南長沙北大青鳥長沙大計教育,成立于2006年,湖南長沙IT學(xué)校排名領(lǐng)先品牌,學(xué)校依托了北京大學(xué)雄厚的技術(shù)資源,專注于職業(yè)教育,也是我國中南地區(qū)Java軟件工程師的人才搖籃。 初高中生班,大專本科班全面招生中 長沙北大青鳥大計教育就在杜鵑路 北大青鳥長沙校區(qū)選長沙大計教育,選學(xué)一門,學(xué)通學(xué)透,求學(xué)電話:4008-0731-86

長沙北大青鳥學(xué)校怎么樣,長沙北大青鳥學(xué)費一覽表



拓展閱讀:

長沙北大青鳥哪家最好
北大青鳥長沙分校
長沙北大青鳥學(xué)?煽繂
長沙北大青鳥學(xué)校怎么樣
長沙北大青鳥學(xué)費一覽表

【java虛擬機(jī) JVM詳解 內(nèi)部原理 (小白必看)】

正文:一.什么是JVM?了解什么是JVM之前先簡單說下什么是Java?,啥是Java很難用一句話來概括,我們從四個方面來闡述.        語言:作為世界上最流行的編程語言,Java可以編寫C/S、B/S模式的軟件。語法由JavaLanguageSpecification規(guī)定。        平臺:作為一個開發(fā)平臺,以JVM為基礎(chǔ),除Java外還有Groovy,Scala,Kotlin,JRuby,Clojure,Jython等語言。虛擬機(jī)內(nèi)部機(jī)制由JavaVirtualMachineSpecification規(guī)定。        文化:作為一種文化,Java幾乎成為可“開源”的代名詞.        生態(tài):作為生態(tài),Java擁有世界最多的技術(shù)擁護(hù)者和開源社區(qū)的支持。從桌面應(yīng)用軟件、嵌入式開發(fā)到企業(yè)級應(yīng)用、后臺服務(wù)、中間件都可以看到Java的身影.大家學(xué)習(xí)Java的過程中,相信都會有了解到JDK和JRE這兩個東西,我們要講的JVM就屬于JRE當(dāng)中的.為什么叫做虛擬機(jī)呢?(如下圖所示:)因為java程序是在java虛擬機(jī)中運行,通過JVM來對class文件進(jìn)行翻譯給操作系統(tǒng)執(zhí)行,官方提供了不同操作系統(tǒng)上的JVM.在這里JVM相當(dāng)于充當(dāng)了翻譯官的角色,也使java有跨平臺這個特性.[C語言、匯編語言等古老的語言不能跨平臺],也對應(yīng)了它的口號“一次編譯,到處執(zhí)行”.二.JVM有什么作用?        JVM由三個主要部件構(gòu)成:                ①類加載器②運行時數(shù)據(jù)區(qū)③執(zhí)行引擎(1)類加載器[ClassLoader]:        它負(fù)責(zé)在運行時查找和裝入類文件的類,JVM里有多個類加載器,每個類加載器負(fù)責(zé)加載特定位置的類.(如下圖:)例如    引導(dǎo)類加載器(bootstrap):負(fù)責(zé)加載jre/lib/rt.jar中的類    擴(kuò)展類加載器(extclassloader):負(fù)責(zé)加載jre/lib/ext/*.jar中的類    系統(tǒng)類加載器(appclassloader):負(fù)責(zé)classspath指定的目錄或jar中的類為什么要分成不同的類加載器呢?主要為了安全性,打個比方如果一個有惡意class文件類并且路徑偽裝下,它要被加載的話首先會通過系統(tǒng)類加載器進(jìn)行加載,加載器發(fā)現(xiàn)此類不符它的加載范圍,會給它上一級擴(kuò)展類加載器,因為每個加載器都有特定的加載范圍,到最后這個類都不符合.就算在系統(tǒng)類加載器中加載了,也不會影響到JVM主要的類文件.1(2)運行時數(shù)據(jù)區(qū)[RuntimeDataArea]:        Java虛擬機(jī)在執(zhí)行Java程序的過程中會把它管理的內(nèi)存劃分為若干個不同的數(shù)據(jù)區(qū)域.(如下圖:)主要分為五大區(qū)域塊:    方法區(qū)(MethodArea):這是一塊公共區(qū)域,它存放一些加載后的類信息(有類的版本、字段、方法、接口等描述信息)、常量、靜態(tài)變量等信息.Java虛擬機(jī)規(guī)范規(guī)定,當(dāng)方法區(qū)無法滿足內(nèi)存分配的需求時,將拋出OutOfMemoryError異常。    堆區(qū)(HeapArea):堆也是被所有線程共享的一塊區(qū)域,在JVM啟動時創(chuàng)建,它存放對象實例,幾乎所有的對象實例都在這里分配內(nèi)存,這塊區(qū)域也是GC(垃圾回收機(jī)制)重點清理的區(qū)域,當(dāng)堆中的內(nèi)存無法分配給示例時,會拋出OutOfMemoryError異常。    虛擬機(jī)棧(VMStack):它描述的是Java方法執(zhí)行的內(nèi)存模型,當(dāng)執(zhí)行一個方法時會創(chuàng)建一個棧幀,棧幀用于存儲局部變量表、操作數(shù)棧、動態(tài)鏈接、方法出口等信息,基本變量和對象的引用變量都存放于此.棧中執(zhí)行順序是“后入先出(LIFO)”這里打個比方:當(dāng)一個Main方法調(diào)用另A方法,這時會創(chuàng)建兩個棧幀先執(zhí)行的Main方法會最后出這個棧,而A方法執(zhí)行完后會先出棧,則A方法被銷毀.總的來說一個方法的入棧出棧就表示著一個方法從調(diào)用到執(zhí)行完成的過程,棧是線程私有的,它的生命周期與線程相同,Java虛擬機(jī)規(guī)范對這個區(qū)域規(guī)定了兩種異常情況:    ①如果線程請求的棧深度大于虛擬機(jī)所允許的深度,將拋出StackOverflowError異常    ②如果虛擬機(jī)棧可以動態(tài)擴(kuò)展,如果擴(kuò)展時無法申請到足夠的內(nèi)存,就會拋出OutOfMemoryError異常.(當(dāng)前大部分JVM都可以動態(tài)擴(kuò)展,只不過JVM規(guī)范也允許固定長度的虛擬機(jī)棧)    程序計數(shù)器(ProgramCounterRegister):首先它是線程私有區(qū)域,它存儲或說記錄當(dāng)前線程之前執(zhí)行的任務(wù)狀態(tài),等線程搶到CPU時間片時,繼續(xù)未完成的任務(wù).[也稱為PC寄存器]    本地方法棧(NativeMethodStack):用于JNT調(diào)用等,.JNI技術(shù),java調(diào)用c語言等其它語言開發(fā)的函數(shù),本地方法棧中也會拋出StackOverflowError和OutOfMemory異常.該區(qū)域不受GC所管制.[運行時數(shù)據(jù)區(qū)圖:][方法區(qū)示意圖:][虛擬機(jī)棧圖:][棧幀出入示意圖:](3)執(zhí)行引擎[RuntimeDataArea]:(如下圖所示)執(zhí)行引擎將字節(jié)碼分配給運行時數(shù)據(jù)區(qū),執(zhí)行引擎讀取字節(jié)碼并逐段執(zhí)行.其中圖中的本地接口(JNI):JNI會與本地方法庫進(jìn)行交互并提供執(zhí)行引擎所需的本地庫。本地方法庫:它是一個執(zhí)行引擎所需的本地庫的集合。下面咱們來看一段代碼:publicclassTest1{publicstaticintnum=1;//類變量會存放在方法區(qū)中publicvoidmethod1(){/*在這個方法中創(chuàng)建了一個對象,但是會在內(nèi)存中產(chǎn)生兩個相關(guān)數(shù)據(jù).我們知道等號左邊的對象是等號右邊的一個引用,左邊的引用是存放在此方法棧幀中的,而右邊的Test2則是一個實例對象,所以它存放在堆區(qū)中.* /Test2test2=newTest2();}}123456789101112相信看到這里大家對JVM有了一個初步的了解,在我們遇到的所有java問題都可以追溯到JVM中.今天的分享就到這里,后續(xù)還會繼續(xù)更新相關(guān)內(nèi)容,感謝大家!————————————————版權(quán)聲明:本文為CSDN博主

上一篇:長沙北大青鳥在哪,孫正義馬云:昔日相互成就,如今漸行漸遠(yuǎn)?
下一篇:長沙市北大青鳥學(xué)校介紹,java學(xué)習(xí)第一周總結(jié)

熱門話題

招生熱線: 4008-0731-86 / 0731-82186801

學(xué)校地址: 長沙市天心區(qū)團(tuán)結(jié)路6號

Copyright © 2006 | 湖南大計信息科技有限公司 版權(quán)所有

湘ICP備14017520號-3

關(guān)注我們
在線咨詢
嘿,我來幫您!