日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JVM 调优 1:“精通 JVM 调优,有过 JVM 调优经验”简历敢写吗?薪资涨 5k 的技巧

發(fā)布時間:2025/3/8 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JVM 调优 1:“精通 JVM 调优,有过 JVM 调优经验”简历敢写吗?薪资涨 5k 的技巧 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 一、部分大廠對于 JVM GC 的面試題
    • 1.1、百度
    • 1.2、順豐
    • 1.3、京東
    • 1.4、淘寶
    • 1.5、阿里、蘑菇街
  • 二、Garbage Collectors(GC)作何使用
  • 三、GC 的十種類型
  • 四、JVM 的版本參數(shù)信息
    • 4.1、查看 Java 啟動時所有默認(rèn)的命令行參數(shù)
    • 4.2、查看 Java 啟動時 GC 的參數(shù)信息
  • 五、GC 的分代模型與分區(qū)模型
    • 5.1、分代模型
      • 5.1.1、新生代
      • 5.1.2、老年代
  • 總結(jié)


前言

現(xiàn)在除了一些有工作和開發(fā)經(jīng)驗(yàn)的大神,基本很少有人在簡歷上敢寫“精通 JVM 調(diào)優(yōu),有過 JVM 調(diào)優(yōu)經(jīng)驗(yàn)”,因?yàn)閼?yīng)聘者如果寫這句話就意味著你的面試將會是很“難過”的,面試官會變著法的問你如何進(jìn)行 JVM 系列調(diào)優(yōu),如果你的基礎(chǔ)比較薄弱或者是僅僅背面試題速成,那么你很可能在面試中露餡。JVM 作為 Java 的核心,面試后端開發(fā)工程師或者架構(gòu)師這都是必備的技能。既然 JVM 如此重要,那我就在本系列中完整的過一遍,讓你敢于在簡歷上寫“精通 JVM 調(diào)優(yōu),有過 JVM 調(diào)優(yōu)經(jīng)驗(yàn)”,薪資漲 5k!


在聊 JVM 調(diào)優(yōu)和 GC 之前,我們先看看當(dāng)下就業(yè)環(huán)境中面試對于 JVM 和 GC 的一些相關(guān)面試題,看看企業(yè)開發(fā)崗需要什么樣的人才。

一、部分大廠對于 JVM GC 的面試題

說明:以下數(shù)據(jù)來源于 2019~2020 年一些大廠的面試題。

1.1、百度

  • CMS 和 G1 的異同。
  • G1 什么時候引發(fā) FullGC?
  • 說一個最熟悉的垃圾回收算法。
  • 吞吐量優(yōu)先和響應(yīng)時間優(yōu)先的回收器有哪些?

1.2、順豐

  • 怎么判斷內(nèi)存泄漏?
  • 講一下 CMS 的流程。

1.3、京東

  • 為什么壓縮指針超過 32G 失效?

1.4、淘寶

  • 什么是內(nèi)存泄漏?GC 調(diào)優(yōu)有經(jīng)驗(yàn)嗎?一般出現(xiàn) GC 問題你怎么解決?

1.5、阿里、蘑菇街

  • ThreadLocal 有沒有內(nèi)存泄漏問題?
  • G1 兩個 Region 不是連續(xù)的,而且之間還有可達(dá)的引用,我現(xiàn)在要回收一個,另一個怎么處理?
  • 講一下 JVM 堆內(nèi)存管理(對象分配過程)。
  • 聽說過 CMS 的并發(fā)預(yù)處理和并發(fā)可中斷預(yù)處理嗎?
  • 到底多大的對象會被直接扔到老年代?

看了面試題,作何感想?可能有人覺得簡單,有人一知半解,聽過但是不會。不要急!我們慢慢來。

二、Garbage Collectors(GC)作何使用

首先我們都知道,在 Java 當(dāng)中,我們在創(chuàng)建一個對象之后,就可以無需再去管它,該對象不被使用變成一個垃圾之后,誰去進(jìn)行處理?Garbage Collectors(垃圾回收器)。

備注:后續(xù)文章內(nèi)容 Garbage Collectors 皆用 GC 代替。

三、GC 的十種類型

JVM 作為 Java 的樞紐,管理著全部的內(nèi)存,而對于內(nèi)存的分配和回收就是由垃圾回收器來控制。

從 JVM 的誕生到現(xiàn)在 2021 年,一共產(chǎn)生過十種類型的垃圾回收器,如下圖所示:


這里呢大家可以對這十種垃圾回收器僅作了解,我們將會在后續(xù)的章節(jié)中一一為大家介紹。

四、JVM 的版本參數(shù)信息

現(xiàn)在企業(yè)開發(fā)絕大多數(shù)使用的版本為 1.8。我本地的開發(fā)版本也是 1.8,我們就通過該版本來進(jìn)行演示。


如果我們直接將程序部署到 JVM 上,沒有做過任何調(diào)優(yōu)動作,1.8 版本的默認(rèn) GC 為 Parallel。

可能有人會有疑問:如何查看開發(fā)環(huán)境下 JVM 默認(rèn)的 GC 版本信息呢?別急,往下看。

首先我們來認(rèn)識以下幾個命令,我們打開 CMD 命令界面。

4.1、查看 Java 啟動時所有默認(rèn)的命令行參數(shù)

輸入以下 Shell 命令:

java -XX:+PrintCommandLineFlags

這是我們就可以看到打印出的 Java 啟動時所有默認(rèn)的命令行參數(shù),如下圖所示:

4.2、查看 Java 啟動時 GC 的參數(shù)信息

如果只需要查看本地環(huán)境下的 GC 參數(shù)信息,我們輸入如下 Shell 命令即可:

java -XX:+PrintCommandLineFlags -version

我們可以從控制臺的返回信息得知,1.8.0_251-b08 版本所對應(yīng)的默認(rèn) GC 為 Parallel,如下圖所示:

五、GC 的分代模型與分區(qū)模型

上面我們已經(jīng)說到,內(nèi)存的分配和回收就是由垃圾回收器來控制。

我們將 GC 的使用分為兩大類,分別是:分代模型分區(qū)模型

  • 分代模型:兩個垃圾回收器混合控制系統(tǒng)中的垃圾回收。
  • 分區(qū)模型:不再分代,一個垃圾回收器就足夠。

在本節(jié)中我們將著重對分代模型進(jìn)行介紹。

5.1、分代模型

分代模型將內(nèi)存分為兩個大的部分,新生代和老年代。

如下圖所示,左半部分為新生代,右半部分為老年代:


新生代和老年代所對應(yīng)的回收算法應(yīng)用

  • 新生代大量死去,少量存活,采用復(fù)制算法。
  • 老年代存活率高,回收較少,采用MC或MS。

5.1.1、新生代

剛剛誕生的的對象為“新生”,存放在新生代區(qū)域里面。隨著程序的運(yùn)行,大部分“新生對象”被垃圾回收。

5.1.2、老年代

垃圾回收器回收了多次沒有回收掉的對象被稱為“老年”,就被存放在老年代中。

在默認(rèn)情況下 JDK 1.8 沒有調(diào)參數(shù)、調(diào)優(yōu)用的就是 GC 的分代模型。


總結(jié)

在本文中我們通過面試題知道了大廠開發(fā)對于 JVM 的要求,暫時了解在 JVM 中存在的十種 GC,學(xué)會如何查看本地開發(fā)環(huán)境默認(rèn)的 GC,掌握了 GC 的兩種使用方式,分代模型與分區(qū)模型,明白什么樣的對象屬于什么代,存放在內(nèi)存中的什么位置。同時,在新生代和老年代中又會誕生各種各樣的垃圾回收算法,我們將在下一小節(jié)講解。


我是白鹿,一個不懈奮斗的程序猿。望本文能對你有所裨益,歡迎大家的一鍵三連!若有其他問題、建議或者補(bǔ)充可以留言在文章下方,感謝大家的支持!

總結(jié)

以上是生活随笔為你收集整理的JVM 调优 1:“精通 JVM 调优,有过 JVM 调优经验”简历敢写吗?薪资涨 5k 的技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。