虚拟机中那些可以作为root对象_java虚拟机面试题及答案整理
下面要給大家?guī)?lái)的是和java虛擬機(jī)相關(guān)的面試題,那么常見(jiàn)的java虛擬機(jī)面試題都有哪些呢?下面就讓我們一起來(lái)了解一下和它有關(guān)的最新的面試題吧!
面試題:
1、JVM垃圾回收機(jī)制,什么時(shí)候觸發(fā)MinorGC等操作?
答案:在eden區(qū)內(nèi)存不能夠?yàn)橐粋€(gè)新對(duì)象分配內(nèi)存的時(shí)候,就會(huì)觸發(fā)Minor GC。
Minor GC也被叫做是新生代GC,它主要指的就是發(fā)生在PSYoungGen的垃圾收集動(dòng)作。
PSYoungGen主要包括了3個(gè)區(qū)域,分別是eden區(qū)、from(From Survivor)區(qū)和to(To Survivor)區(qū)。
2、虛擬機(jī)是怎樣執(zhí)行方法里面的字節(jié)碼指令的?
答案:解釋執(zhí)行(通過(guò)解釋器執(zhí)行) 、編譯執(zhí)行(通過(guò)即時(shí)編譯器產(chǎn)生本地代碼)。
3、講一下虛擬機(jī)和物理機(jī)的區(qū)別
答案:虛擬機(jī):執(zhí)行引擎是自己實(shí)現(xiàn)的,所以,能夠自行制定指令集和執(zhí)行引擎的結(jié)構(gòu)體系,除此之外,還可以執(zhí)行那些不被硬件直接支持的指令集格式;物理機(jī):執(zhí)行引擎是直接建立在處理器、硬件、指令集和操作系統(tǒng)層面的。
4、講一下java虛擬機(jī)調(diào)用字節(jié)碼指令有哪些?
答案:(1)invokestatic調(diào)用靜態(tài)方法(2)invokespecial調(diào)用實(shí)例構(gòu)造器方法、私有方法和父類方法(3)invokevirtual:調(diào)用所有的虛方法(4)invokeinterface調(diào)用接口方法。
5、JVM加載class文件的原理是什么?
答案:在JVM當(dāng)中,類的裝載是由ClassLoader和它的子類來(lái)實(shí)現(xiàn)的,Java ClassLoader是一個(gè)重要的Java運(yùn)行時(shí)系統(tǒng)組件,Java
ClassLoader負(fù)責(zé)在運(yùn)行的時(shí)候查找和裝入類文件的類。
java當(dāng)中的所有類,都要由類加載器裝載到JVM當(dāng)中才可以運(yùn)行。
類加載器自身也是一個(gè)類,類加載器的工作就是將class文件從硬盤讀取到內(nèi)存當(dāng)中。
在寫程序的時(shí)候,基本上不要關(guān)心類的加載。
類裝載方式,有以下的2種方式:
(1)隱式裝載
程序在運(yùn)行過(guò)程當(dāng)中,在碰到通過(guò)new等方式生成對(duì)象的時(shí)候,隱式調(diào)用類裝載器加載對(duì)應(yīng)的類到j(luò)vm中,
(2)顯式裝載
通過(guò)class.forname()等方法,顯式加載需要的類,隱式加載和顯式加載的區(qū)別:兩者本質(zhì)是一樣的。
java類的加載是動(dòng)態(tài)的,它不會(huì)說(shuō)一次性就把所有的類全部加載之后,再來(lái)運(yùn)行,而是保證程序運(yùn)行的基礎(chǔ)類完全加載到j(luò)vm當(dāng)中,至于其他的類,那么,就只會(huì)在需要的時(shí)候才加載。
6、jvm最大內(nèi)存限制是多少?
答案:
7、JVM內(nèi)存模型是什么?
答案:java內(nèi)存模型又可以叫做是JMM,JMM決定一個(gè)線程對(duì)共享變量的寫入何時(shí)對(duì)另一個(gè)線程可見(jiàn)。
從抽象的角度來(lái)看,JMM定義了線程和主內(nèi)存之間的抽象關(guān)系。
線程之間的共享變量存儲(chǔ)在主內(nèi)存當(dāng)中,每個(gè)線程都有一個(gè)私有的本地內(nèi)存,本地內(nèi)存中存儲(chǔ)了該線程以讀/寫共享變量的副本。
本地內(nèi)存是JMM的一個(gè)抽象概念,它不是真實(shí)存在的。
它涵蓋了緩存,寫緩沖區(qū),寄存器以及其他的硬件和編譯器優(yōu)化。
8、哪些對(duì)象可作為ROOT對(duì)象?
答案:虛擬機(jī)棧中的引用對(duì)象、方法區(qū)中類靜態(tài)屬性引用的對(duì)象、方法區(qū)中常量引用對(duì)象、本地方法棧中JNI引用對(duì)象。
9、JVM分區(qū)都有哪些?
答案:程序計(jì)數(shù)器(Program Count Register)、本地方法棧(Native Stack)、方法區(qū)(Methon
Area)、棧(Stack)、堆(Heap)。
10、講以下類的加載過(guò)程
答案:
具體的大家可以參考以下以下的文章-JVM類加載機(jī)制,什么是類的加載?
你還想了解更多的面試題嗎?請(qǐng)繼續(xù)關(guān)注奇Q工具網(wǎng)來(lái)了解吧,更多Java面試題可以分享給你。
推薦閱讀:
總結(jié)
以上是生活随笔為你收集整理的虚拟机中那些可以作为root对象_java虚拟机面试题及答案整理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 广告公司门口标语文案29句
- 下一篇: cmd长ping记录日志和时间_Gin