java JDK17 jvm參數(shù)配置過(guò)程解讀
java JDK17 jvm參數(shù)配置
配置示例
--add-opens=java.base/java.lang=ALL-UNNAMED \ -Xms1500m -Xmx1500m \-XX:ReservedCodeCacheSize=256m \-XX:InitialCodeCacheSize=256m \ -XX:+UnlockExperimentalVMOptions \-XX:+UseZGC \-XX:ConcGCThreads=1 -XX:ParallelGCThreads=2 \-XX:ZCollectionInterval=30 -XX:ZAllocationSpikeTolerance=5 \-XX:+UnlockDiagnosticVMOptions -XX:-ZProactive \-Xlog:safepoint,classhisto*=trace,age*,gc*=info:file=/opt/gc-%t.log:time,tid,tags:filecount=5,filesize=50m \-XX:+HeapDumpOnOutOfMemoryError \-XX:HeapDumpPath=/opt/errorDump.hprof
參數(shù)解讀
這些JVM參數(shù)用于配置Java虛擬機(jī)(JVM)的行為,以優(yōu)化性能、監(jiān)控垃圾收集活動(dòng)、管理內(nèi)存分配,并啟用一些實(shí)驗(yàn)性或診斷功能。
下面是對(duì)每個(gè)參數(shù)的詳細(xì)解釋:
--add-opens=java.base/java.lang=ALL-UNNAMED
- 這個(gè)參數(shù)用于打開模塊系統(tǒng)中
java.base
模塊內(nèi)java.lang
包的訪問(wèn)權(quán)限,允許未命名模塊(通常是那些沒有聲明屬于任何模塊的類路徑上的類)訪問(wèn)這個(gè)包內(nèi)的元素。 - 這對(duì)于某些需要反射訪問(wèn)Java核心庫(kù)內(nèi)部細(xì)節(jié)的框架或工具是必要的。
-Xms1500m -Xmx1500m
- 設(shè)置JVM的初始堆內(nèi)存大?。?code>-Xms)和最大堆內(nèi)存大?。?code>-Xmx)為1500MB。
- 這有助于減少應(yīng)用程序啟動(dòng)時(shí)的內(nèi)存分配調(diào)整,并限制其占用的最大內(nèi)存空間。
-XX:ReservedCodeCacheSize=256m -XX:InitialCodeCacheSize=256m
- 分別設(shè)置了代碼緩存的初始大小和預(yù)留的最大大小為256MB。
- 代碼緩存用于存儲(chǔ)JIT(Just-In-Time)編譯后的本地代碼,這兩個(gè)設(shè)置確保了足夠的空間用于即時(shí)編譯,以提高運(yùn)行效率。
-XX:+UnlockExperimentalVMOptions
- 啟用實(shí)驗(yàn)性JVM選項(xiàng)
- 允許使用一些尚未穩(wěn)定或默認(rèn)不公開的特性
-XX:+UseZGC
- 指定使用Z Garbage Collector(ZGC)
- 這是一個(gè)可伸縮、低延遲的垃圾收集器,特別適合大規(guī)模的多核系統(tǒng),旨在實(shí)現(xiàn)暫停時(shí)間不超過(guò)10毫秒的目標(biāo)。
-XX:ConcGCThreads=1 -XX:ParallelGCThreads=2
- 配置ZGC或其他并行GC的線程數(shù)。
ConcGCThreads
=1指定了并發(fā)標(biāo)記階段使用的線程數(shù),而ParallelGCThreads
=2則指定了在并行回收階段使用的線程數(shù)。
-XX:ZCollectionInterval=30 -XX:ZAllocationSpikeTolerance=5
- ZGC特有的參數(shù)。
ZCollectionInterval
設(shè)置觸發(fā)垃圾收集周期的時(shí)間間隔(單位是秒),這里是每30秒檢查一次是否需要進(jìn)行垃圾回收。ZAllocationSpikeTolerance
控制內(nèi)存分配速率突增的容忍度,值越高,JVM越晚響應(yīng)突增的內(nèi)存需求,以避免不必要的垃圾回收。
-XX:+UnlockDiagnosticVMOptions -XX:-ZProactive
- 前者解鎖診斷性的VM選項(xiàng),允許使用一些用于調(diào)試和診斷的特殊選項(xiàng)。
- 后者禁用ZGC的主動(dòng)回收模式,即不基于預(yù)測(cè)來(lái)提前執(zhí)行垃圾回收。
-Xlog:safepoint,classhisto*=trace,age*,gc*=info:file=/opt/gc-%t.log:time,tid,tags:filecount=5,filesize=50m
- 配置日志記錄,包括安全點(diǎn)活動(dòng)、類加載統(tǒng)計(jì)、年齡信息以及所有與GC相關(guān)的日志級(jí)別分別設(shè)置為trace和info。
- 日志將被寫入到
/opt/gc-%t.log
,其中%t
會(huì)被當(dāng)前時(shí)間戳替代,同時(shí)限制最多保留5個(gè)文件,每個(gè)文件最大50MB,并且包含時(shí)間、線程ID和標(biāo)簽信息。
-XX:+HeapDumpOnOutOfMemoryError
- 當(dāng)發(fā)生內(nèi)存溢出錯(cuò)誤(OutOfMemoryError)時(shí)
- 自動(dòng)創(chuàng)建堆轉(zhuǎn)儲(chǔ)文件,這對(duì)于后期分析問(wèn)題原因非常有用
-XX:HeapDumpPath=/opt/errorDump.hprof
- 指定當(dāng)發(fā)生內(nèi)存溢出時(shí)
- 堆轉(zhuǎn)儲(chǔ)文件的保存路徑為
/opt/errorDump.hprof
整體而言:
這些配置旨在優(yōu)化一個(gè)應(yīng)用的內(nèi)存管理、垃圾收集策略,以及提升在遇到內(nèi)存問(wèn)題時(shí)的診斷能力,特別是針對(duì)需要高性能、低延遲處理的應(yīng)用場(chǎng)景。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring中WebClient的創(chuàng)建和使用詳解
這篇文章主要介紹了Spring中WebClient的創(chuàng)建和使用詳解,在Spring5中,出現(xiàn)了Reactive響應(yīng)式編程思想,并且為網(wǎng)絡(luò)編程提供相關(guān)響應(yīng)式編程的支持,如提供了WebFlux,它是Spring提供的異步非阻塞的響應(yīng)式的網(wǎng)絡(luò)框架,需要的朋友可以參考下2023-11-11MyBatis存儲(chǔ)過(guò)程、MyBatis分頁(yè)、MyBatis一對(duì)多增刪改查操作
本文通過(guò)一段代碼給大家介紹了MyBatis存儲(chǔ)過(guò)程、MyBatis分頁(yè)、MyBatis一對(duì)多增刪改查操作,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-11-11解決IDEA service層跳轉(zhuǎn)實(shí)現(xiàn)類的快捷圖標(biāo)消失問(wèn)題
這篇文章主要介紹了解決IDEA service層跳轉(zhuǎn)實(shí)現(xiàn)類的快捷圖標(biāo)消失問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02Java中xxl-job實(shí)現(xiàn)分片廣播任務(wù)的示例
本文主要介紹了Java中xxl-job實(shí)現(xiàn)分片廣播任務(wù)的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03