1.?java -XX:+PrintCommandLineFlags HelloGC
- 作用:打印 JVM 啟動時的命令行參數,包括用戶顯式設置的參數和 JVM 自動默認設置的參數。用于確認 JVM 實際使用的配置。
2.?java -Xmn10M -Xms40M -Xmx60M -XX:+PrintCommandLineFlags -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCCauses HelloGC
- 參數解析:
-Xmn10M
:設置新生代內存大小為 10M。-Xms40M
:設置堆內存初始大小為 40M。-Xmx60M
:設置堆內存最大大小為 60M。-XX:+PrintCommandLineFlags
:打印啟動參數。-XX:+PrintGC
:輸出簡單的 GC 日志(如 GC 發生的時間、回收區域等)。-XX:+PrintGCDetails
:輸出詳細的 GC 日志(包括內存回收前后的大小、耗時等)。-XX:+PrintGCTimeStamps
:在 GC 日志中添加時間戳,記錄 GC 發生的具體時間。-XX:+PrintGCCauses
:記錄觸發 GC 的原因(如 Eden 區滿、晉升老年代失敗等)。
- 整體作用:配置堆內存參數并全面監控 GC 行為,用于分析 GC 性能。
- 注意:
Xms和Xmx最好設置成大小一樣的,這樣不會造成堆不斷的擴容或者收縮,從而帶來性能上的負擔。
3.?java -XX:+UseConcMarkSweepGC -XX:+PrintCommandLineFlags HelloGC
- 作用:
-XX:+UseConcMarkSweepGC
:啟用 CMS(Concurrent Mark Sweep)垃圾收集器。-XX:+PrintCommandLineFlags
:打印啟動參數,確認 CMS 收集器是否生效。
4.?java -XX:+PrintFlagsInitial
- 作用:打印 JVM 所有參數的初始默認值,即未被用戶或 JVM 動態調整前的默認配置。
5.?java -XX:+PrintFlagsFinal
- 作用:打印 JVM 所有參數的最終值,包括用戶顯式設置的參數、JVM 根據運行環境自動調整的參數。用于確認參數最終生效情況。
6.?java -XX:+PrintFlagsFinal | grep xxx
- 作用:結合管道命令?
grep
,過濾出包含指定關鍵字(如?xxx
)的 JVM 參數,方便快速查找目標參數的最終配置。
7.?java -XX:+PrintFlagsFinal -version | grep GC
- 作用:
-XX:+PrintFlagsFinal
:打印所有參數最終值。-version
:輸出 JVM 版本信息。| grep GC
:過濾出與 GC(垃圾回收)相關的參數,用于快速確認 JVM 的 GC 配置(如使用的垃圾收集器、GC 相關參數等)。