已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
匯報(bào)人:陳琦帆,JVM,匯報(bào)人:陳琦帆,JVM簡(jiǎn)介目錄,Java虛擬機(jī)和Java內(nèi)存區(qū)域概述Java虛擬機(jī)棧和本地方法棧Java堆方法區(qū)和運(yùn)行時(shí)常量池,Java虛擬機(jī)和Java內(nèi)存區(qū)域概述,什么是虛擬機(jī),什么是Java虛擬機(jī)Java虛擬機(jī)基礎(chǔ)架構(gòu)Java虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū)程序計(jì)數(shù)器區(qū)域,Java虛擬機(jī)和Java內(nèi)存區(qū)域概述什么是虛擬機(jī),什么是Java虛擬機(jī),虛擬機(jī)定義:模擬某種計(jì)算機(jī)體系結(jié)構(gòu),執(zhí)行特定指令集的軟件系統(tǒng)虛擬機(jī)(VirtualBox、VMware),進(jìn)程虛擬機(jī)進(jìn)程虛擬機(jī)JVM、AdobeFlashPlayer、FC模擬器高級(jí)語(yǔ)言虛擬機(jī)JVM、.NETCLR、P-Code,Java虛擬機(jī)和Java內(nèi)存區(qū)域概述什么是虛擬機(jī),什么是Java虛擬機(jī),Java語(yǔ)言虛擬機(jī)可以執(zhí)行Java語(yǔ)言的高級(jí)語(yǔ)言虛擬機(jī)。Java語(yǔ)言虛擬機(jī)并不一定就可以稱為JVM,譬如:ApacheHarmonyJava虛擬機(jī)必須通過(guò)JavaTCK(TechnologyCompatibilityKit)的兼容性測(cè)試的Java語(yǔ)言虛擬機(jī)才能稱為“Java虛擬機(jī)”Java虛擬機(jī)并非一定要執(zhí)行“Java”程序業(yè)界三大商用JVM:OracleHotSpot、OracleJRockitVM、IBMJ9VM,Java虛擬機(jī)和Java內(nèi)存區(qū)域概述JAVA虛擬機(jī)架構(gòu),該圖參考了網(wǎng)上廣為流傳的JVM構(gòu)成圖,大家看這個(gè)圖,整個(gè)JVM分為四部分:ClassLoader類加載器ExecutionEngine執(zhí)行引擎NativeInterface本地接口Runtimedataarea運(yùn)行數(shù)據(jù)區(qū),Java虛擬機(jī)和Java內(nèi)存區(qū)域概述什么是虛擬機(jī),什么是Java虛擬機(jī),OracleHotSpot虛擬機(jī)最初由名為“LongviewTechnologies”的小公司開(kāi)發(fā),后被Sun公司收購(gòu)。最初并非面向Java語(yǔ)言開(kāi)發(fā),而是面向Strongtalk語(yǔ)言。HotSpot命名來(lái)自它的“熱點(diǎn)代碼探測(cè)”技術(shù)。從JDK1.2開(kāi)始加入Sun(Oracle)JDK,在JDK1.3開(kāi)始成為Sun(Oracle)JDK的默認(rèn)實(shí)現(xiàn),在1.4中成為唯一的虛擬機(jī)。在2006年底開(kāi)始開(kāi)源,由此建立的OpenJDK項(xiàng)目。本系列課程中所有的虛擬機(jī)實(shí)現(xiàn),所指的都是OracleHotSpot虛擬機(jī)。,Java虛擬機(jī)和內(nèi)存區(qū)域概述Java虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū),Java虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū)在Java虛擬機(jī)規(guī)范中定義了若干種程序運(yùn)行期間會(huì)使用到的存儲(chǔ)不同類型數(shù)據(jù)的區(qū)域。有一些區(qū)域是全局共享的,隨著虛擬機(jī)啟動(dòng)而創(chuàng)建,隨著虛擬機(jī)退出而銷毀。有一些區(qū)域是線程私有的,隨著線程開(kāi)始和結(jié)束而創(chuàng)建和銷毀。是所有Java虛擬機(jī)共同的內(nèi)存區(qū)域概念模型,Java虛擬機(jī)和內(nèi)存區(qū)域概述Java虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū),運(yùn)行時(shí)數(shù)據(jù)區(qū)的劃分程序計(jì)數(shù)器Java堆Java虛擬機(jī)棧本地方法棧方法區(qū),Java虛擬機(jī)和內(nèi)存區(qū)域概述程序計(jì)數(shù)器區(qū)域,程序計(jì)數(shù)器(ProgramCounterRegister)一塊較小的的內(nèi)存空間,它的作用可以看作是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號(hào)指示器。如果線程正在執(zhí)行的是一個(gè)Java方法,這個(gè)計(jì)數(shù)器記錄的是正在執(zhí)行的虛擬機(jī)字節(jié)碼指令的地址;如果正在執(zhí)行的是Native方法,這個(gè)計(jì)數(shù)器值則為空。此內(nèi)存區(qū)域是唯一一個(gè)在Java虛擬機(jī)規(guī)范中沒(méi)有規(guī)定任何OutOfMemoryError情況的區(qū)域。,JVM自動(dòng)內(nèi)存管理:內(nèi)存區(qū)域基礎(chǔ)概念,Java虛擬機(jī)棧和本地方法棧,Java虛擬機(jī)棧和本地方法棧,Java虛擬機(jī)棧的概念和特征本地方法棧的概念和特征棧幀概念和特征本地變量表和操作數(shù)棧實(shí)戰(zhàn)內(nèi)存異常實(shí)戰(zhàn),Java虛擬機(jī)棧和本地方法棧Java虛擬機(jī)棧的概念和特征,Java虛擬機(jī)棧的特征線程私有后進(jìn)先出(LIFO)棧存儲(chǔ)棧幀,支撐Java方法的調(diào)用、執(zhí)行和退出可能出現(xiàn)OutOfMemoryError異常和StackOverflowError異常,Java虛擬機(jī)棧和本地方法棧本地方法棧的概念和特征,Java本地方法棧的特征線程私有后進(jìn)先出(LIFO)棧作用是支撐Native方法的調(diào)用、執(zhí)行和退出可能出現(xiàn)OutOfMemoryError異常和StackOverflowError異常有一些虛擬機(jī)(如HotSpot)將Java虛擬機(jī)棧和本地方法棧合并實(shí)現(xiàn),Java虛擬機(jī)和內(nèi)存區(qū)域概述棧幀概念和特征,棧幀的概念和特征Java虛擬機(jī)棧中存儲(chǔ)的內(nèi)容,它被用于存儲(chǔ)數(shù)據(jù)和部分過(guò)程結(jié)果的數(shù)據(jù)結(jié)構(gòu),同時(shí)也被用來(lái)處理動(dòng)態(tài)鏈接、方法返回值和異常分派一個(gè)完整的棧幀包含:局部變量表、操作數(shù)棧、動(dòng)態(tài)連接信息、方法正常完成和異常完成信息,Java虛擬機(jī)和內(nèi)存區(qū)域概述棧幀概念和特征,局部變量表概念和特征由若干個(gè)Slot組成,長(zhǎng)度由編譯期決定單個(gè)Slot可以存儲(chǔ)一個(gè)類型為boolean、byte、char、short、float、reference和returnAddress的數(shù)據(jù),兩個(gè)Slot可以存儲(chǔ)一個(gè)類型為long或double的數(shù)據(jù)。局部變量表用于方法間參數(shù)傳遞,以及方法執(zhí)行過(guò)程中存儲(chǔ)基礎(chǔ)數(shù)據(jù)類型的值和對(duì)象的引用,Java虛擬機(jī)和內(nèi)存區(qū)域概述棧幀概念和特征,操作數(shù)棧的概念和特征是一個(gè)后進(jìn)先出棧,由若干個(gè)Entry組成,長(zhǎng)度由編譯期決定單個(gè)Entry即可以存儲(chǔ)一個(gè)Java虛擬機(jī)中定義的任意數(shù)據(jù)類型的值,包括long和double類型,但是存儲(chǔ)long和double類型的Entry深度為2,其他類型的深度為1在方法執(zhí)行過(guò)程中,棧幀用于存儲(chǔ)計(jì)算參數(shù)和計(jì)算結(jié)果;在方法調(diào)用時(shí),操作數(shù)棧也用來(lái)準(zhǔn)備調(diào)用方法的參數(shù)以及接收方法返回結(jié)果,Java虛擬機(jī)棧和本地方法棧棧幀實(shí)戰(zhàn),通過(guò)一個(gè)具體例子來(lái)演示棧幀的局部變量表和操作數(shù)棧的工作方式,Java虛擬機(jī)棧和本地方法棧內(nèi)存異常實(shí)戰(zhàn),Java虛擬機(jī)棧和本地方法??赡馨l(fā)生如下異常情況:如果線程請(qǐng)求分配的棧容量超過(guò)Java虛擬機(jī)棧允許的最大容量時(shí),Java虛擬機(jī)將會(huì)拋出一個(gè)StackOverflowError異常。如果Java虛擬機(jī)棧可以動(dòng)態(tài)擴(kuò)展,并且擴(kuò)展的動(dòng)作已經(jīng)嘗試過(guò),但是目前無(wú)法申請(qǐng)到足夠的內(nèi)存去完成擴(kuò)展,或者在建立新的線程時(shí)沒(méi)有足夠的內(nèi)存去創(chuàng)建對(duì)應(yīng)的虛擬機(jī)棧,那Java虛擬機(jī)將會(huì)拋出一個(gè)OutOfMemoryError異常。,Java虛擬機(jī)棧和本地方法棧內(nèi)存異常實(shí)戰(zhàn),虛擬機(jī)棧棧溢出的實(shí)例演示,JVM自動(dòng)內(nèi)存管理:內(nèi)存區(qū)域基礎(chǔ)概念,Java堆,Java堆,Java堆的概念棧與堆Java堆內(nèi)存異常實(shí)戰(zhàn),Java堆Java堆的概念,Java堆的特征全局共享通常是Java虛擬機(jī)中最大的一塊內(nèi)存區(qū)域作用是做為Java對(duì)象的主要存儲(chǔ)區(qū)域JVMS明確要求該區(qū)域需要實(shí)現(xiàn)自動(dòng)內(nèi)存管理,即常說(shuō)的GC,但并不限制采用哪種算法和技術(shù)去實(shí)現(xiàn)可能出現(xiàn)OutOfMemoryError異常,Java堆棧與堆,從棧到堆的關(guān)聯(lián)過(guò)程:,Objectobj=newObject(),Java堆Java堆內(nèi)存異常實(shí)戰(zhàn),Java堆可能發(fā)生如下異常情況:如果實(shí)際所需的堆超過(guò)了自動(dòng)內(nèi)存管理系統(tǒng)能提供的最大容量,那Java虛擬機(jī)將會(huì)拋出一個(gè)OutOfMemoryError異常。,JVM自動(dòng)內(nèi)存管理:內(nèi)存區(qū)域基礎(chǔ)概念,方法區(qū)和運(yùn)行時(shí)常量池,方法區(qū)和運(yùn)行時(shí)常量池,方法區(qū)的概念運(yùn)行時(shí)常量池的概念HotSpot方法區(qū)實(shí)現(xiàn)的變遷方法區(qū)內(nèi)存異常實(shí)戰(zhàn),方法區(qū)和運(yùn)行時(shí)常量池方法區(qū)的概念,方法區(qū)的特征全局共享作用是存儲(chǔ)Java類的結(jié)構(gòu)信息JVMS不要求該區(qū)域?qū)崿F(xiàn)自動(dòng)內(nèi)存管理,但是商用Java虛擬機(jī)都能夠自動(dòng)管理該區(qū)域的內(nèi)存可能出現(xiàn)OutOfMemoryError異常,方法區(qū)和運(yùn)行時(shí)常量池運(yùn)行時(shí)常量池的概念,運(yùn)行時(shí)常量池的特征全局共享是方法區(qū)的一部分作用是存儲(chǔ)Java類文件常量池中的符號(hào)信息可能出現(xiàn)OutOfMemoryE
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年云南工貿(mào)職業(yè)技術(shù)學(xué)院馬克思主義基本原理概論期末考試模擬題附答案解析(奪冠)
- 2025年桑日縣幼兒園教師招教考試備考題庫(kù)帶答案解析(必刷)
- 2025年上猶縣幼兒園教師招教考試備考題庫(kù)附答案解析
- 2025年徐聞縣招教考試備考題庫(kù)附答案解析
- 2024年溫州肯恩大學(xué)馬克思主義基本原理概論期末考試題帶答案解析
- 2025年天津生物工程職業(yè)技術(shù)學(xué)院馬克思主義基本原理概論期末考試模擬題及答案解析(奪冠)
- 2024年黔西南民族職業(yè)技術(shù)學(xué)院馬克思主義基本原理概論期末考試題帶答案解析(必刷)
- 2025年和平縣幼兒園教師招教考試備考題庫(kù)帶答案解析
- 2025年天津職業(yè)大學(xué)單招職業(yè)技能考試模擬測(cè)試卷附答案解析
- 2025年長(zhǎng)武縣招教考試備考題庫(kù)附答案解析(必刷)
- TSG ZF001-2006《安全閥安全技術(shù)監(jiān)察規(guī)程》
- GB/T 4706.19-2024家用和類似用途電器的安全第19部分:液體加熱器的特殊要求
- 氣體滅火拆除施工方案及流程
- DL-T+5220-2021-10kV及以下架空配電線路設(shè)計(jì)規(guī)范
- 視覺(jué)傳播概論(第2版)課件全套 任悅 第1-12章 視覺(jué)傳播概述- 視覺(jué)傳播中的倫理道德與法規(guī)
- DB4403T399-2023居家適老化改造與管理規(guī)范
- 解分式方程50題八年級(jí)數(shù)學(xué)上冊(cè)
- GB/T 27866-2023鋼制管道和設(shè)備防止焊縫硫化物應(yīng)力開(kāi)裂的硬度控制技術(shù)規(guī)范
- 部編版小學(xué)語(yǔ)文四年級(jí)下冊(cè)第一單元教材解讀課件
- 骨科常見(jiàn)病、多發(fā)病清單、疑難病種清單、核心手術(shù)操作技術(shù)清單
- 保單整理分享課件
評(píng)論
0/150
提交評(píng)論