jvm原理以及jvm調(diào)優(yōu)全過程
一、jvm原理解析
什么是jvm
JVM是Java Virtual Machine(Java虛擬機(jī))的縮寫,JVM是一種用于計(jì)算設(shè)備的規(guī)范,它是一個(gè)虛構(gòu)出來的計(jì)算機(jī),是通過在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來實(shí)現(xiàn)的。
二、JVM 調(diào)優(yōu)
關(guān)鍵調(diào)優(yōu)參數(shù)
堆內(nèi)存配置:
- -Xms:初始堆大小
- -Xmx:最大堆大小
- -Xmn:新生代大小
- -XX:NewRatio:新生代與老年代比例
- -XX:SurvivorRatio:Eden 區(qū)與 Survivor 區(qū)比例
垃圾回收器選擇:
- -XX:+UseSerialGC:串行 GC
- -XX:+UseParNewGC:ParNew GC
- -XX:+UseParallelGC:Parallel GC
- -XX:+UseConcMarkSweepGC:CMS GC
- -XX:+UseG1GC:G1 GC
- -XX:+UnlockExperimentalVMOptions -XX:+UseZGC:ZGC
其他參數(shù):
- -XX:MaxGCPauseMillis:最大 GC 停頓時(shí)間
- -XX:+PrintGC:打印 GC 日志
- -XX:+HeapDumpOnOutOfMemoryError:OOM 時(shí)生成堆轉(zhuǎn)儲(chǔ)文件
調(diào)優(yōu)實(shí)踐
堆內(nèi)存調(diào)優(yōu)(應(yīng)用頻繁出現(xiàn)內(nèi)存溢出(OOM)):
- 分析堆轉(zhuǎn)儲(chǔ)文件,定位大對(duì)象
- 調(diào)整堆大小(-Xms、-Xmx)
- 優(yōu)化對(duì)象生命周期,減少不必要的對(duì)象創(chuàng)建
垃圾回收器調(diào)優(yōu)(GC 停頓時(shí)間過長(zhǎng)):
- 選擇合適的 GC 算法(如 G1 用于低停頓)
- 調(diào)整 GC 參數(shù)(如-XX:MaxGCPauseMillis=200)
- 分析 GC 日志,優(yōu)化回收策略
線程調(diào)優(yōu)(線程競(jìng)爭(zhēng)激烈,CPU 利用率高):
- 使用jstack分析線程堆棧
- 優(yōu)化線程池配置(如ThreadPoolExecutor參數(shù))
- 減少同步操作,使用無鎖數(shù)據(jù)結(jié)構(gòu)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot訪問請(qǐng)求404的原因及解決辦法
在使用Spring Boot開發(fā)應(yīng)用程序時(shí),有時(shí)可能會(huì)遇到訪問請(qǐng)求出現(xiàn)404錯(cuò)誤的情況,即請(qǐng)求的資源未找到,這篇文章主要給大家介紹了關(guān)于springboot訪問請(qǐng)求404的原因及解決辦法,需要的朋友可以參考下2023-09-09
java.util.Date和java.time.LocalDate對(duì)比及分析
本文介紹了java.util.Date和java.time下的日期兩種日期類型的區(qū)別和使用場(chǎng)景,前者表示一個(gè)瞬時(shí)時(shí)間點(diǎn),包含日期+時(shí)間,后者僅表示純?nèi)掌?后者時(shí)區(qū)無關(guān)聯(lián),而前者依賴操作系統(tǒng)時(shí)區(qū)顯示,兩者之間可以相互轉(zhuǎn)換,并且可以格式化輸出2026-05-05
RestTemplate().postForEntity的參數(shù)使用及說明
`RestTemplate().postForEntity()`是SpringFramework中用于發(fā)送HTTP POST請(qǐng)求并獲取響應(yīng)的方法,該方法接受目標(biāo)URL、請(qǐng)求體、期望的響應(yīng)類型以及可選的變量參數(shù),并返回一個(gè)包含HTTP響應(yīng)信息的`ResponseEntity`對(duì)象2025-12-12
關(guān)于SpringBoot的異?;貪L和事務(wù)的使用詳解
這篇文章主要介紹了關(guān)于SpringBoot的異?;貪L和事務(wù)的使用詳解,Spring中 @Transactional 注解,默認(rèn)情況下,只對(duì)拋出的RuntimeException 異常,才會(huì)事務(wù)回滾,需要的朋友可以參考下2023-05-05

