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