JVM面試題
字節碼相關
JMM內存模型
- 說說JVM的主要組成部分以及做用?
- jvm內存模型,內存屏障
- 對象必定分配在堆棧對象不必定分配在堆上,JIT能夠實現棧上分配
- java線程模型和jvm線程模型區分
- Java堆的內存結構? 在什麼地方會發生OOM? 如何分析OOM發生的緣由? 讓你本身實現OOM,你會怎麼作?
- 什麼東西分配在堆上和棧上?
- 一個對象從建立到銷燬都是怎麼在這些部分裏存活和轉移的?
- JVM 運行時區域 常見的堆內存溢出狀況
- 棧溢出的情形(遞歸,調節-Xss
類加載器
- 什麼是雙親委派模型?
- 類加載器的本質
- 類加載器爲何有三層結構
- 怎麼自定義類加載器作容器隔離?
- 講講類加載機制唄?都有哪些類加載器,這些類加載器都加載哪些文件?
- 手寫一下類加載Demo
- Classloader做用
- 講一講類加載器工做機制?你知道強引用、弱引用和軟引用嗎?爲何要有這些東西?他們有什麼做用?你在項目中用過嗎?
- 說一下java類加載器的工做機制?類加載在那個區域進行的?
- 你本身定義的類能被最頂級的類加載器加載嗎?爲何? 自定義的類會被什麼類加載器加載? 如何加載一個不在根目錄下的類?
- 什麼是雙親委派模型?爲何Java的類加載器要使用雙親委派模型? 1五、如何自定義本身的類加載器,本身的類加載器和Java自帶的類加載器關係如何處理?
- 什麼是tomcat/jboss類加載機制?
GC垃圾回收
- 簡單闡述下垃圾回收機制
- 堆的原理和分代瞭解嗎
- GC方式有哪些?它們的原理是什麼?
- CMS和G1各自使用的算法以及優缺點
- 內存分配策略(如何在Eden和老年代中分配)、回收策略(Minor GC、Full GC)
- 談談你對上面GC中回收對象中提出的對象有什麼理解?回收那些對象,須要怎麼分辨?
- 你瞭解的垃圾收集算法有哪些?
- 你瞭解那些垃圾收集器?
- 線上發送頻繁fullgc如何處理?
- 新生代,老年代說下?
- 通常新生代逃過幾回gc()會被劃分到老年代?
- survivor區做用
- jvm中一次完整的GC流程(從ygc到fgc)是怎樣的,重點講講對象如何晉升到老年代,幾種主要的jvm參數等
- 你知道哪幾種垃圾收集器,各自的優缺點,重點講下CMS
- 新生代垃圾收集是否會停頓 ,cms是否會停頓,在何時停頓
- 講講 GC,清除,整理,交換(survivor 區域),CMS 執行的過程
- 什麼狀況會致使內存泄露,內存溢出,你怎麼解決的。
- gc怎麼回收對象的,用了什麼算法 說一下分治算法思想
- JVM垃圾回收機制,什麼時候觸發MinorGC等
- 新生代和老生代的內存回收策略 ,Eden和Survivor的比例分配等
- Java 8的內存分代改進
- 簡述java內存分配與回收策略以及Minor GC和Major GC?
- 內存溢出通常發生在哪一個區?永久代會不會致使內存溢出?
- 棧溢出通常拋出什麼異常?jvm設置棧的大小,參數?
- 說說GC的過程 強制young gc會有什麼問題? 知道G1麼? 回收過程是怎麼樣的?
- CMS GC有什麼問題? 怎麼避免產生浮動垃圾?
- 若是web服務器忽然出現頻率很高的FullGC,多是什麼緣由?你會怎麼去排查呢?
- 「只對堆進行gc 」這句話對不對?調用system.gc()立刻就執行gc嗎?
- GC的機制是什麼?垃圾回收器的基本原理是還說呢麼?是否能夠當即回收內存?怎麼樣主動的通知JVM進行垃圾回收?
- 頻繁老年代回收怎麼分析和解決?
- 何時一個對象會被GC? 接着問爲何要在這種時候對象纔會被GC? GC策略都有哪些分類?這些策略分別都有什麼優劣勢?都適用於什麼場景? 舉個實際的場景,讓選擇一個GC策略?而後問什麼要選擇這個策略?
- 內存的哪些部分會參與GC的回收?
- 線程池中的線程爲何不會被GC回收
- JVM 簡述 G1,可預測停頓時間,是怎麼作到的?
- CMS和G1的區別,講一講CMS垃圾收集的步驟,哪些步驟是併發哪些是並行。知道哪些垃圾收集算法
- 觸發Full GC 的場景有哪些? 說說G1垃圾回收器?老年代,年輕代如何分配?
- 垃圾回收基本原理、幾種常見的垃圾回收器的特性、重點了解CMS(或G1)以及一些重要的參數 內存區域:能說清jvm的內存劃分 常見問題 CMS GC回收分爲哪幾個階段?分別作了什麼事情? CMS有哪些重要參數? Concurrent Model Failure和ParNew promotion failed什麼狀況下會發生? CMS的優缺點? 有作過哪些GC調優? 爲何要劃分紅年輕代和老年代? 年輕代爲何被劃分紅eden、survivor區域? 年輕代爲何採用的是複製算法? 老年代爲何採用的是標記清除、標記整理算法 什麼狀況下使用堆外內存?要注意些什麼? 堆外內存如何被回收?
- g1收集器用的具體算法? 遇到過什麼線上問題?線程池用法不對,頻繁full GC怎麼處理的?回答內存dump,定位問題
- GC的常見算法,CMS以及G1的垃圾回收過程,CMS的各個階段哪兩個是Stop the world的,CMS會不會產生碎片,G1的優點
- 標記清除和標記整理算法的理解以及優缺點。
- eden survivor區的比例,爲何是這個比例,eden survivor的工做過程。
- JVM如何判斷一個對象是否該被GC,能夠視爲root的都有哪幾種類型。
- 強軟弱虛引用的區別以及GC對他們執行怎樣的操做
- Java是否能夠GC直接內存
- JVM 內存分配策略 FullGC 的觸發條件有哪些
- RememberedSet的做用
- YGC和FGC發生的具體場景; 四、jstack,jmap,jutil分別的意義?如何線上排查JVM的相關問題?
JVM調優
- 請問你作過哪些JVM優化?使用什麼方法?達到什麼效果?
- 當出現了內存溢出,你怎麼排錯?
- 用過哪些命令查看JVM的狀態、堆棧信息?
- jvm內存調優用過哪些工具,jstate作什麼用的?如何dump出當前線程狀態?
- 應用服務器的jvm調優實際經驗,如何作的,在哪裏用到的
- 對象比較大,生命週期短,GC參數怎麼調優
- 平時遇到內存溢出的情形,處理 答:-Xms和-Xmx,-XX:+HeapDumpOnOutMemoryError,讓虛擬機在出現內存溢出異常時Dump出當前的內存堆轉儲快照以便過後分析。
歡迎搜索關注本人與朋友共同開發的微信面經小程序【大廠面試助手】!java