jinfo_動態調整JVM參數(無需重啟)(實踐)


​本文演示在JVM進程運行過程中動態開啟/關閉 GC輸出,無需重啟JVM進程

jinfo使用介紹
可以用來查看正在運行的Java應用程序的擴展參數,甚至支持在運行時,修改部分參數
-flag <name> pid:打印指定JVM的參數值 
-flag [+|-]<name> pid:設置指定JVM參數的布爾值
-flag <name>=<value> pid:設置指定JVM參數的值

有一點必須注意:PrintGC必須開啟,只開啟PrintGCDetails、PrintGCTimeStamps不會輸出GC,必須PrintGC同時開啟
1、JVM啟動時設置以下參數:-Xmx20m -Xms20m -Xmn2m,代碼如下(改代碼會發生GC)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private static void s2() {
        String name = ManagementFactory.getRuntimeMXBean().getName();
        // get pid
        String pid = name.split( "@" )[ 0 ];
        System.out.println( "Pid is:" + pid);
        
        while ( true )
        {
            byte [] b = null ;
            for ( int i = 0 ; i < 10 ; i++)
                b = new byte [ 1 * 1024 * 1024 ];
 
            try {
                Thread.sleep( 5000 );
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }


2、使用jinfo查看JVM GC的相關參數值



3、啟動GC輸出



4、控制台GC輸出

170.658: [GC [PSYoungGen: 0K->0K(1536K)] 18091K->18091K(19968K), 0.0006562 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 

170.658: [GC [PSYoungGen: 0K->0K(1536K)] 18091K->18091K(19968K), 0.0003981 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 

170.659: [Full GC [PSYoungGen: 0K->0K(1536K)] [ParOldGen: 18091K->2048K(18432K)] 18091K->2048K(19968K) [PSPermGen: 3280K->3280K(21504K)], 0.0060813 secs] [Times: user=0.03 sys=0.00, real=0.01 secs] 


 

5、參考資料

http://www.open-open.com/lib/view/open1437018491912.html








免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM