自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

京東面試:如何進(jìn)行JVM調(diào)優(yōu)?

開發(fā) 前端
只有知道了為什么要進(jìn)行 JVM 調(diào)優(yōu)之后,你才能準(zhǔn)確的回答出來如何進(jìn)行 JVM 調(diào)優(yōu)?針對(duì)不同的 JVM 調(diào)優(yōu)的手段和側(cè)重點(diǎn)也是不同的。

JVM 調(diào)優(yōu)是一個(gè)很大的話題,在回答“如何進(jìn)行 JVM 調(diào)優(yōu)?”之前,首先我們要回答一個(gè)更為關(guān)鍵的問題,那就是,我們?yōu)槭裁匆M(jìn)行 JVM 調(diào)優(yōu)?

只有知道了為什么要進(jìn)行 JVM 調(diào)優(yōu)之后,你才能準(zhǔn)確的回答出來如何進(jìn)行 JVM 調(diào)優(yōu)?

要進(jìn)行 JVM 調(diào)優(yōu)無非就是以下兩種情況:

  • 目標(biāo)驅(qū)動(dòng)型的 JVM 調(diào)優(yōu),如,我們是為了最短的停頓時(shí)間所以要進(jìn)行 JVM 調(diào)優(yōu),或者是我們?yōu)榱俗畲笸掏铝克砸M(jìn)行 JVM 調(diào)優(yōu)等。
  • 問題驅(qū)動(dòng)型的 JVM 調(diào)優(yōu),因?yàn)樯a(chǎn)環(huán)境出現(xiàn)了頻繁的 FullGC 了,導(dǎo)致程序執(zhí)行變慢,所以我們要進(jìn)行 JVM 調(diào)優(yōu)。

所以,針對(duì)不同的 JVM 調(diào)優(yōu)的手段和側(cè)重點(diǎn)也是不同的。

總的來說,JVM 進(jìn)行調(diào)優(yōu)的流程如下:

  • 確定 JVM 調(diào)優(yōu)原因
  • 分析 JVM(目前)運(yùn)行情況
  • 設(shè)置 JVM 調(diào)優(yōu)參數(shù)
  • 壓測(cè)觀測(cè)調(diào)優(yōu)后的效果
  • 應(yīng)用調(diào)優(yōu)后的配置

具體來說它們的執(zhí)行如下。

1.確定JVM調(diào)優(yōu)原因

先確定是目標(biāo)驅(qū)動(dòng)型的 JVM 調(diào)優(yōu),還是問題驅(qū)動(dòng)型的 JVM 調(diào)優(yōu)。

如果是目標(biāo)性的 JVM 調(diào)優(yōu),那么 JVM 調(diào)優(yōu)實(shí)現(xiàn)思路就比較簡單了,如:

  • 以最短停頓時(shí)間為目標(biāo)的調(diào)優(yōu),只需要將垃圾收集器設(shè)置成以最短停頓時(shí)間的為目標(biāo)的垃圾收集器即可,如 CMS 收集器或 G1 收集器。
  • 以吞吐量為目標(biāo)的調(diào)優(yōu),只需要將垃圾收集器設(shè)置為 Parallel Scavenge 和 Parallel Old 這種以吞吐量為主要目標(biāo)的垃圾回收器即可。

如果是以問題驅(qū)動(dòng)的 JVM 調(diào)優(yōu),那就要先分析問題是什么,然后再進(jìn)行下一步的調(diào)優(yōu)了。

2.分析JVM運(yùn)行情況

我們可以借助于目前主流的監(jiān)控工具 Prometheus + Grafana 和 JDK 自帶的命令行工具,如 jps、jstat、jinfo、jstack 等進(jìn)行 JVM 運(yùn)行情況的分析。

主要分析的點(diǎn)是 Young GC 和 Full GC 的頻率,以及垃圾回收的執(zhí)行時(shí)間。

3.設(shè)置JVM調(diào)優(yōu)參數(shù)

常見的 JVM 調(diào)優(yōu)參數(shù)有以下幾個(gè):

  • 調(diào)整堆內(nèi)存大小:通過設(shè)置 -Xms(初始堆大小)和 -Xmx(最大堆大?。﹨?shù)來調(diào)整堆內(nèi)存大小,避免頻繁的垃圾回收。
  • 選擇合適的垃圾回收器:根據(jù)應(yīng)用程序的性能需求和特點(diǎn),選擇合適的垃圾回收器,如 Serial GC、Parallel GC、CMS GC、G1 GC 等。
  • 調(diào)整新生代和老年代比:通過設(shè)置 -XX:NewRatio 參數(shù)來調(diào)整新生代和老年代的比例,優(yōu)化內(nèi)存分配。
  • 設(shè)置合適的堆中的各個(gè)區(qū)域比例:通過設(shè)置 -XX:SurvivorRatio 參數(shù)和 -XX:MaxTenuringThreshold 參數(shù)來調(diào)整 Eden 區(qū)、Survivor 區(qū)和老年代的比例,避免過早晉升和過多頻繁的垃圾回收。
  • 設(shè)置對(duì)象從年輕代進(jìn)入老年代的年齡值:-XX:InitialTenuringThreshold=7 表示 7 次年輕代存活的對(duì)象就會(huì)進(jìn)入老年代。
  • 設(shè)置元空間大小:在 JDK 1.8 版本中,元空間的默認(rèn)大小會(huì)根據(jù)操作系統(tǒng)有所不同。具體來說,在 Windows 上,元空間的默認(rèn)大小為 21MB;而在 Linux 上,其默認(rèn)大小為 24MB。然而如果元空間不足也有可能觸發(fā) Full GC 從而導(dǎo)致程序執(zhí)行變慢,因此我們可以通過 -XX:MaxMetaspaceSize=設(shè)置元空間的最大容量。

4.壓測(cè)觀測(cè)調(diào)優(yōu)后的效果

JVM 參數(shù)調(diào)整之后,我們要通過壓力測(cè)試來觀察 JVM 參數(shù)調(diào)整前和調(diào)整后的差別,以確認(rèn)調(diào)整后的效果。

5.應(yīng)用調(diào)優(yōu)后的配置

在確認(rèn)了 JVM 參數(shù)調(diào)整后的效果滿足需求之后,就可以將 JVM 的參數(shù)配置應(yīng)用與生產(chǎn)環(huán)境了。

責(zé)任編輯:姜華 來源: Java中文社群
相關(guān)推薦

2023-04-24 14:54:09

JVM性能調(diào)優(yōu)

2023-10-04 19:43:38

2012-03-26 10:55:03

JavaJava EE

2012-01-10 14:35:08

JavaJVM

2021-12-06 11:03:57

JVM性能調(diào)優(yōu)

2017-07-21 08:55:13

TomcatJVM容器

2023-11-11 19:07:23

JVMJava

2024-05-24 10:36:27

2010-09-26 09:08:17

JVM調(diào)優(yōu)

2010-09-26 13:39:46

JVM調(diào)優(yōu)

2012-01-10 15:13:56

JavaJVM

2023-12-04 10:36:46

SessionCookie

2019-02-19 10:25:28

JVM性能工具

2017-10-17 14:02:30

jvm調(diào)優(yōu)工具

2017-09-22 15:15:23

jvm調(diào)優(yōu)命令

2021-06-03 08:32:18

JVM調(diào)優(yōu)虛擬機(jī)

2024-12-04 15:49:29

2021-11-21 23:03:38

jvm調(diào)優(yōu)虛擬機(jī)

2010-09-27 09:23:42

JVM調(diào)優(yōu)

2010-03-04 10:56:52

JVM參數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)