發(fā)文章
發(fā)文工具
撰寫
網(wǎng)文摘手
文檔
視頻
思維導(dǎo)圖
隨筆
相冊(cè)
原創(chuàng)同步助手
其他工具
圖片轉(zhuǎn)文字
文件清理
AI助手
留言交流
1. JVM 由哪些區(qū)域構(gòu)成?由類加載器和運(yùn)行時(shí)數(shù)據(jù)區(qū)構(gòu)成;運(yùn)行時(shí)數(shù)據(jù)區(qū)又分為線程私有和線程共享兩大區(qū)域,線程私有的包括程序計(jì)數(shù)器、虛擬機(jī)棧和本地方法棧,線程共享的包括堆和方法區(qū)。
1. JVM 由哪些區(qū)域構(gòu)成?
2. 類加載器的作用是什么?加載 class 文件,生成類的結(jié)構(gòu)信息,將其存放在方法區(qū)。
2. 類加載器的作用是什么?
3. 類加載器有哪些種類以及它們之間的關(guān)系是什么?Bootstrap ClassLoader,加載 lib 下面的類;Extension ClassLoader,加載擴(kuò)展類,即 jre/ext 下面的類;Application ClassLoader,加載用戶編寫的類;還可以繼承 ClassLoader 類自定義類加載器。Application ClassLoader 是 Extension ClassLoader 的子類,Extension ClassLoader 又是 Bootstrap ClassLoader 的子類。
3. 類加載器有哪些種類以及它們之間的關(guān)系是什么?
4. 什么是雙親委派機(jī)制?簡(jiǎn)單地說就是要加載類時(shí)先找自己的父類去進(jìn)行加載。比如要加載 A.class,首先 Application ClassLoader 會(huì)先找自己的父類,即 Extension ClassLoader,Extension ClassLoader 又會(huì)先找自己的父類,即 Bootstrap ClassLoader,它沒加載到,再告訴 Extension ClassLoader,它又沒加載到,才輪到 Application ClassLoader 去加載。這就是雙親委派機(jī)制,可以保證優(yōu)先加載 JDK 自己的類。
4. 什么是雙親委派機(jī)制?
5. 類的加載過程是怎樣的?加載:將 class 文件加載進(jìn)內(nèi)存;驗(yàn)證:驗(yàn)證 class 文件的正確性;準(zhǔn)備:給類中的靜態(tài)變量分配空間;解析:將 class 常量池中的符號(hào)引用替換成直接引用;初始化:對(duì)靜態(tài)變量和靜態(tài)代碼塊進(jìn)行初始化。
5. 類的加載過程是怎樣的?
6. 說說你對(duì)棧內(nèi)存的認(rèn)識(shí)?棧內(nèi)存是線程私有的一塊區(qū)域,分為虛擬機(jī)棧和本地方法棧?;绢愋偷淖兞?、對(duì)象的引用變量和實(shí)例方法都是在棧中分配的。棧的內(nèi)存地址是連續(xù)的,不存在垃圾回收。本地方法棧和虛擬機(jī)棧差不多,只不過本地方法棧是為本地方法服務(wù)的。
6. 說說你對(duì)棧內(nèi)存的認(rèn)識(shí)?
7. 程序計(jì)數(shù)器的作用是什么?記錄程序執(zhí)行的位置,程序調(diào)用別的方法、循環(huán)、遞歸的時(shí)候,下一次要回到哪兒執(zhí)行,就靠程序計(jì)數(shù)器記錄。
7. 程序計(jì)數(shù)器的作用是什么?
8. 方法區(qū)是物理上的劃分嗎?方法區(qū)是用來存儲(chǔ)類加載器生成的類的結(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)存。
8. 方法區(qū)是物理上的劃分嗎?
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ì)存放到老年代。
9. 你對(duì)堆內(nèi)存了解多少?
掃描二維碼
來自: 貪挽懶月 > 《待分類》
0條評(píng)論
發(fā)表
請(qǐng)遵守用戶 評(píng)論公約
JVM系列(三):雙親委派機(jī)制筆記
JVM系列(三):雙親委派機(jī)制筆記 1、Java類加載的過程Java類的加載過程是動(dòng)態(tài)的,它不會(huì)一次性把程序所有的類全部加載后再運(yùn)...
淺析Java虛擬機(jī)結(jié)構(gòu)與機(jī)制(轉(zhuǎn))
JVM的類加載子系統(tǒng)支持在運(yùn)行時(shí)的動(dòng)態(tài)加載,動(dòng)態(tài)加載的優(yōu)點(diǎn)有很多,例如可以節(jié)省內(nèi)存空間、靈活地從網(wǎng)絡(luò)上加載類,動(dòng)態(tài)加載的另一好處是...
深入了解java虛擬機(jī)
擴(kuò)展類加載器(Extension ClassLoader):該類加載器負(fù)責(zé)加載JDK安裝目錄下的\jre\lib\ext的類,或者由java.ext.dirs系統(tǒng)變量指定路徑中...
Java:JVM知識(shí)點(diǎn)梳理
將Class文件加載到JVM中、審查每個(gè)類由誰加載(父優(yōu)先的等級(jí)加載機(jī)制)、將Class字節(jié)碼重新解析成JVM統(tǒng)一要求的對(duì)象(Class對(duì)象)格式。動(dòng)態(tài)加載理論上可以直接替換這個(gè)對(duì)象,然后更新Java棧中所有對(duì)原...
JVM史上最最最完整深入解析!萬字長(zhǎng)文!
1、 JVM自帶的類加載器(3種):(1)根類加載器(Bootstrap):a、C++編寫的,程序員無法在程序中獲取該類b、負(fù)責(zé)加載虛擬機(jī)的核心庫,...
Jvm工作原理學(xué)習(xí)筆記
Jvm工作原理學(xué)習(xí)筆記。JVM類加載順序:(2) Sun Hotspot JVM為了提升對(duì)象內(nèi)存分配的效率,對(duì)于所創(chuàng)建的線程都會(huì)分配一塊獨(dú)立的空間TLAB(Thread Local Allocation Buffer),其大小由JVM根據(jù)運(yùn)行...
JVM內(nèi)存分析,以及一步步詳解Java程序是如何運(yùn)行的?
JVM內(nèi)存分析,以及一步步詳解Java程序是如何運(yùn)行的?但是Java虛擬機(jī)它并不認(rèn)識(shí).Java文件,Java虛擬機(jī)和Java語言其實(shí)并沒有必然的聯(lián)系。j...
紀(jì)念我曾經(jīng)的 JAVA 姿勢(shì)
類加載。當(dāng)一個(gè)ClassLoader實(shí)例需要加載某個(gè)類時(shí),它會(huì)試圖親自搜索某個(gè)類之前,先把這個(gè)任務(wù)委托給它的父類加載器,這個(gè)過程是由上至下...
周末請(qǐng)看:2萬字!JVM核心知識(shí)總結(jié),贈(zèng)送18連環(huán)炮
認(rèn)識(shí)JDK、JVM、JRE 什么是JVM.加載的順序:先查找是否已經(jīng)加載過,當(dāng)沒有被加載過,則加載的順序是自頂向下,也就是由上層來逐層嘗試加...
微信掃碼,在手機(jī)上查看選中內(nèi)容