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