jvm調優面試怎麼答?

一.jvm分爲年輕代,年老代,持久代
1.年輕代:年輕代主要存放新創建的對象,垃圾回收會比較頻繁。(稍微講細一點就是即可,年輕代分成Eden Space和Suvivor Space。當對象在堆創建時,將進入年輕代的Eden Space。垃圾回收器進行垃圾回收時,掃描Eden Space,如果對象仍然存活,則複製到Suvivor Space。)

2.年老代:年老代主要存放JVM認爲生命週期比較長的對象(在掃描Suvivor Space時,如果對象已經經過了幾次的掃描仍然存活,JVM認爲其爲一個持久化對象,則將其移到Old Gen。)

3.持久代:持久代主要存放類定義、字節碼和常量等很少會變更的信息。

二.引出gc算法
年輕代使用的是複製算法(避免頻繁創建對象導致碎片過多,一般會對算法優化來規避算法佔用內存的問題,優化後有效內存能近乎達到百分之90,估計也不會問那麼多,點到爲止)

年老代使用的標記-整理算法(因爲較少的發生gc,使用標記整理算法提高內存利用率)

直觀的對比:
效率:複製算法>標記-整理算法
內存整齊度:複製算法=標記-整理算法
內存利用率:標記-整理算法>複製算法

三.如何實施調優
jvm參數設置,根據機器性能爲程序運行分配合理區大小

四.善後工作
使用jdk自帶的jvisualvm,jconsole等工具監測程序是否發生線程阻塞,內存泄漏,以及觀察gc頻率是否存在異常等

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