轉自:
http://www.java265.com/JavaJingYan/202205/16523679023357.html
JVM擁有很多引數,如下所示
-XX:+PrintCommandLineFlags 列印出JVM運行時的各種的各項配置引數
-verbose:gc 發生GC時,列印出GC日志
-XX:+printGC 發生GC時,列印出GC日志
-XX:+PrintGCDetails 列印GC的詳細日志,并且在程式運行結束是會列印出JVM的記憶體占用情況
-XX:+PrintGCDateStamps 列印GC發生的時間
-XX:+PrintGCTimeStamps 列印GC發生的時間,相對JVM啟動的時間
-Xloggc:d:\\gc.log gc日式默認是列印在控制臺,添加這個引數可以指定GC日志的輸出位置,指定后控制臺就無法查看GC日志了
-XX:+PrintHeapAtGC 每次一次GC后,都列印堆資訊
-XX:+TraceClassLoading 監控類的加載
-Xmx 指定最大堆記憶體
–Xms 指定最小堆記憶體
-Xmn 設定新生代大小
-XX:NewRatio 新生代(eden+2*s)和老年代(不包含永久區)的比值 4 表示 新生代:老年代=1:4,即年輕代占堆的1/5
-XX:SurvivorRatio 設定兩個Survivor區和eden的比 8表示 兩個Survivor :eden=2:8,即一個Survivor占年輕代的1/10
-XX:+HeapDumpOnOutOfMemoryError OOM時匯出堆到檔案
-XX:HeapDumpPath=d:/a.dump 匯出OOM的路徑
-XX:OnOutOfMemoryError 在OOM時,執行一個腳本"-XX:OnOutOfMemoryError=D:/tools/jdk1.7_40/bin/printstack.bat %p“當程式OOM時,在D:/a.txt中將會生成執行緒的dump可以在OOM時,發送郵件,甚至是重啟程式
XX:PermSize 設定永久區的初始空間
-XX:MaxPermSize 設定永久區最大空間
-Xss 指定堆疊的大小
-XX:+UseSerialGC 新生代、老年代使用串行回收,新生代復制演算法,老年代標記-壓縮
-XX:+UseParNewGC 新生代并行,老年代串行,Serial收集器新生代的并行版本,復制演算法,多執行緒,需要多核支持
-XX:ParallelGCThreads 限制執行緒數量
-XX:MaxGCPauseMills 最大停頓時間,單位毫秒,GC盡力保證回收時間不超過設定值
-XX:GCTimeRatio 0-100的取值范圍,垃圾收集時間占總時間的比 默認99,即最大允許1%時間做GC
這兩個引數是矛盾的,因為停頓時間和吞吐量不可能同時調優
-XX:+UseConcMarkSweepGC Concurrent Mark Sweep 并發標記清除,老年代收集器(新生代使用ParNew)
-XX:CMSInitiatingOccupancyFraction設定觸發GC的閾值
-XX:+ UseCMSCompactAtFullCollection Full GC后,進行一次整理,整理程序是獨占的,會引起停頓時間變長
-XX:+CMSFullGCsBeforeCompaction 設定進行幾次Full GC后,進行一次碎片整理
-XX:ParallelCMSThreads 設定CMS的執行緒數量
-XX:+CMSClassUnloadingEnabled:允許對類元資料進行回收
-XX:UseCMSInitiatingOccupancyOnly:表示只在到達閥值的時候,才進行CMS回收
那么如何讀取當前JVM使用了哪些引數呢?
下文筆者講述使用java代碼讀取JVM引數的方法分享,如下所示:
實作思路:
使用 ManagementFactory.getRuntimeMXBean()
中的getInputArguments()方法即可獲取JVM運行時的引數
package com.java265.other; import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; import java.util.List; public class Test01 { /* * java265.com 示例程式 */ public static void main(String[] args) { RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean(); List<String> aList = bean.getInputArguments(); for (int i = 0; i < aList.size(); i++) { System.out.println(aList.get(i)); } } } ----運行以上代碼,將輸出以下資訊----- -Dfile.encoding=UTF-8 -XX:+ShowCodeDetailsInExceptionMessages
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/473449.html
標籤:其他
