吊打面試官!JVM虛擬機靈魂77問,你能答對多少?

JVM虛擬機77道題

1、java中會存在內存泄漏嗎,請簡單描述。
2、64位JVM中,int的長度是多數?
3、Serial與Parallel GC之間的不同之處?
4、32位和64位的JYM; int 類型變裏的長度是多數?
5、Java 中WealReference 與SoftReference 的區別?
6、JYM選項-XX : +UseCompressedOops有什麼作用?爲什麼要使用
7、怎樣通過Java程序來判斷JVM是32位還是64位?
8、32位JyM和64位JVM的最大堆內存分別是多數?
9、JRE、JDK、JMM及JIT之間有什麼不同?
10、解釋Java堆空間及GC?
11、JyM內存區域
12、程序計數器(線程私有)
13、虛擬機棧(線程私有)
14、本地方法區(線程私有)
15、你能保證GC執行嗎?
16、怎麼獲取Java程序使用的內存?堆使用的百分比?
17、Java中堆和棧有什麼區別?
18、描述一下JMM加載class文件的原理機制
19、GC是什麼?爲什麼要有GC?
20、堆(Heap-線程共享) -運行時數據區
21、方法區/永久代(線程共享)
22、JMM運行時內存
23、新生代
24、老年代
25、永久代
26、JAVA8 與元數據
27、引用計數法
28、可達性分析
29、標記清除算法( Mark-Sweep)
30、複製算法(copying)
31、標記整理算法(Mark-Compact)
32、分代收集算法
33、新生代與複製算法
34、老年代與標記複製算法
35、JAVA強引用
36、JAVA軟引用
37、JAVA弱引用
38、JAVA虛引用
39、分代收集算法
40、在新生代複製算法
41、在老年代標記整理算法
42、分區收集算法
43、GC垃圾收集器
44、Serial 垃圾收集器(單線程、複製算法)
45、ParNew 垃圾收集器(Serial+多線程)
46、Parallel Scavenge 收集器(多線程複製算法、高效)
47、Serial Old 收集器(單線程標記整理算法 )
48、Parallel Old 收集器(多線程標記整理算法)
49、CMS 收集器(多線程標記清除算法)
50、G1收集器
51、JYM類加載機制
52、類加載器
53、雙親委派
54、0SGI (動態模型系統)
55、動態改變構造
56、模塊化編程與熱插拔
57、JM內存模型
58、棧
59、本地方法棧
60、程序計數器
61、堆
62、方法區
63、分代回收
64、堆和棧的區別
65、什麼時候會觸發FullGC
66、什麼是Java虛擬機?爲什麼Java被稱作是“平臺無關的編程語言”?
67、對象分配規則
68、描述一下JM加載class文件的原理機制?
69、Java對象創建過程
70、簡述Java的對象結構
71、如何判斷對象可以被回收
72、JM的永久代中會發生垃圾回收麼
73、垃圾收集算法
74、調優命令有哪些?
75、調優工具
76、Minor GC與Full GC分別在什麼時候發生?
77、你知道哪些JVM性能調優

JVM面試題

1、java中會存在內存泄漏嗎,請簡單描述。

會。自己實現堆載的數據結構時有可能會出現內存泄露,可參看effective java.

2、64位JVM中,int的長度是多數?

Java中,int類型變量的長度是一一個固定值,與平臺無關,都是32位。意思就是說,在32位和64位的Java虛擬機中,int類型的長度是相同的。

3、Serial 與Parallel GC之間的不同之處?

Serial與Parallel在GC執行的時候都會引起stop-the-world.它們之間主要不同serial收集器是默認的複製收集器,執行GC的時候只有一個線程,而parallel收集器使用多個GC線程來執行。

4、32位和64位的JVM , int類型變量的長度是多數?

32位和64位的JVM中,int類型變量的長度是相同的,都是32位或者4個字節。

5、Java中WeakReference與SoftReference的區別?

雖然WeakReference與SoftReference都有利於提高GC和內存的效率,但是WeakReference ,一旦失去最後一個強引用,就會被GC回收,而軟引用雖然不能阻止被回收,但是可以延遲到JVM內存不足的時候。

6、JVM選項-XX:+UseCompressed0ops有什麼作用?爲什麼要使用

當你將你的應用從32位的JVM遷移到64位的JVM時,由於對象的指針從32位增加到了64位,因此堆內存會突然增加,差不多要翻倍。
這也會對CPU緩存(容量比內存小很多)的數據產性不利的影響。因爲,遷移到64位的JVM主要動機在於可以指定最大堆大小,通過壓縮OOP可以節省-定的內存。通過-XX:+UseCompressedOops 選項, JVM會使用32位的OOP ,而不是64位的OOP。

7、怎樣通過Java程序來判斷JVM是32位還是64位?

你可以檢查某些系統屬性如sun.arch.data.model或os.arch來獲取該信息。

8、32位JVM和64位JVM的最大堆內存分別是多數?

理論上說上32位的JM堆內存可以到達2^32 ,即4GB ,但實際上會比這個小很多。不同操作系統之間不同,如Windows系統大約1.5GB , Solaris大約3GB。64 位JVM允許指定最大的堆內存,理論上可以達到2^64 ,這是一個非常大的數字,實際上你可以指定堆內存大小到100GB。甚至有的JVM ,如Azul ,堆內存到1000G都是可能的。

9、JRE、JDK、JVM及JIT之間有什麼不同?

JRE代表Java運行時(Java run-time) , 是運行Java引用所必須的。JDK代表Java開發工具( Java development kit) , 是Java程序的開發工具,如Java編譯器,它也包含JRE。JM代表Java虛擬機( Java virtual machine ) ,它的責任是運行Java應用。JT 代表即時編譯( Just In Time compilation) , 當代碼執行的次數超過- -定的閾值時 ,會將Java字節碼轉換爲本地代碼,如,主要的熱點代碼會被準換爲本地代碼,這樣有利大幅度提高Java應用的性能。

以上的面試題都已整理成冊,可以關注我的公衆號《老男孩的架構路》領取一線大廠Java面試題總結+各知識點學習思維導圖+一份400頁pdf文檔的Java獨家面試手冊!

這些資料的內容都是面試時面試官必問的知識點,篇章包括了很多知識點,其中包括了有基礎知識、Java集合、JVM、多線程併發、spring原理、微服務、Netty 與RPC 、Kafka、日記、設計模式、Java算法、數據庫、Zookeeper、分佈式緩存、數據結構等等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章