java培訓(xùn)課程:JVM的體系結(jié)構(gòu)
1. java培訓(xùn)課程中JVM 由哪些區(qū)域構(gòu)成?
由類(lèi)加載器和運(yùn)行時(shí)數(shù)據(jù)區(qū)構(gòu)成;運(yùn)行時(shí)數(shù)據(jù)區(qū)又分為線(xiàn)程私有和線(xiàn)程共享兩大區(qū)域,線(xiàn)程私有的包括程序計(jì)數(shù)器、虛擬機(jī)棧和本地方法棧,線(xiàn)程共享的包括堆和方法區(qū)。
2. 類(lèi)加載器的作用是什么?
加載 class 文件,生成類(lèi)的結(jié)構(gòu)信息,將其存放在方法區(qū)。
3. 類(lèi)加載器有哪些種類(lèi)以及它們之間的關(guān)系是什么?
Bootstrap ClassLoader,加載 lib 下面的類(lèi);Extension ClassLoader,加載擴(kuò)展類(lèi),即 jre/ext 下面的類(lèi);Application ClassLoader,加載用戶(hù)編寫(xiě)的類(lèi);還可以繼承 ClassLoader 類(lèi)自定義類(lèi)加載器。Application ClassLoader 是 Extension ClassLoader 的子類(lèi),Extension ClassLoader 又是 Bootstrap ClassLoader 的子類(lèi)。
4. 什么是雙親委派機(jī)制?
簡(jiǎn)單地說(shuō)就是要加載類(lèi)時(shí)先找自己的父類(lèi)去進(jìn)行加載。比如要加載 A.class,【關(guān)注尚硅谷,輕松學(xué)IT】首先 Application ClassLoader 會(huì)先找自己的父類(lèi),即 Extension ClassLoader,Extension ClassLoader 又會(huì)先找自己的父類(lèi),即 Bootstrap ClassLoader,它沒(méi)加載到,再告訴 Extension ClassLoader,它又沒(méi)加載到,才輪到 Application ClassLoader 去加載。這就是雙親委派機(jī)制,可以保證優(yōu)先加載 JDK 自己的類(lèi)。
5. 類(lèi)的加載過(guò)程是怎樣的?
加載:將 class 文件加載進(jìn)內(nèi)存;
驗(yàn)證:驗(yàn)證 class 文件的正確性;
準(zhǔn)備:給類(lèi)中的靜態(tài)變量分配空間;
解析:將 class 常量池中的符號(hào)引用替換成直接引用;
初始化:對(duì)靜態(tài)變量和靜態(tài)代碼塊進(jìn)行初始化。
6. 說(shuō)說(shuō)你對(duì)棧內(nèi)存的認(rèn)識(shí)?
棧內(nèi)存是線(xiàn)程私有的一塊區(qū)域,分為虛擬機(jī)棧和本地方法棧。基本類(lèi)型的變量、對(duì)象的引用變量和實(shí)例方法都是在棧中分配的。棧的內(nèi)存地址是連續(xù)的,不存在垃圾回收。本地方法棧和虛擬機(jī)棧差不多,只不過(guò)本地方法棧是為本地方法服務(wù)的。
7. 程序計(jì)數(shù)器的作用是什么?
記錄程序執(zhí)行的位置,程序調(diào)用別的方法、循環(huán)、遞歸的時(shí)候,www.atguigu.com下一次要回到哪兒執(zhí)行,就靠程序計(jì)數(shù)器記錄。
8. 方法區(qū)是物理上的劃分嗎?
方法區(qū)是用來(lái)存儲(chǔ)類(lèi)加載器生成的類(lèi)的結(jié)構(gòu)信息的,它是邏輯上的劃分,是一種規(guī)范,并不是具體的實(shí)現(xiàn)。jdk1.7 對(duì)方法區(qū)的實(shí)現(xiàn)叫做永久代,它存在于堆內(nèi)存中;jdk1.8 對(duì)方法區(qū)的實(shí)現(xiàn)叫元空間,它共用物理內(nèi)存。
9. 你對(duì)堆內(nèi)存了解多少?
堆是 JVM 中最大的一塊區(qū)域,存放數(shù)組以及對(duì)象。它又分為新生代、老年代,內(nèi)存占比是 1:2 。新生代又分為伊甸園區(qū)、from 區(qū)和 to 區(qū),這三塊區(qū)域內(nèi)存占比為 8:1:1 。對(duì)象在新生代的伊甸園區(qū)出生,經(jīng)歷了若干次垃圾回收達(dá)到了年齡的對(duì)象就會(huì)存放到老年代。
以上就是整理的java培訓(xùn)課程內(nèi)容,希望對(duì)你有所幫助。
想了解更多相關(guān)資訊請(qǐng)關(guān)注Java培訓(xùn)頻道-查看更多,了解相關(guān)專(zhuān)業(yè)課程信息您可在線(xiàn)咨詢(xún)也可免費(fèi)申請(qǐng)?jiān)囌n。關(guān)注賦能網(wǎng)了解更多:4008-569-579
本文鏈接:
本文章“java培訓(xùn)課程JVM的體系結(jié)構(gòu)學(xué)習(xí)”已幫助 73 人
免責(zé)聲明:本信息由用戶(hù)發(fā)布,本站不承擔(dān)本信息引起的任何交易及知識(shí)產(chǎn)權(quán)侵權(quán)的法律責(zé)任!
本文由賦能網(wǎng) 整理發(fā)布。了解更多培訓(xùn)機(jī)構(gòu)》培訓(xùn)課程》學(xué)習(xí)資訊》課程優(yōu)惠》課程開(kāi)班》學(xué)校地址等機(jī)構(gòu)信息,可以留下您的聯(lián)系方式,讓課程老師跟你詳細(xì)解答:
咨詢(xún)熱線(xiàn):4008-569-579