jvm的性能調優的學習(一)

1 基於jdk命令行的工具

 

1.1jvm的參數類型

  • 標準參數
-help
-server -client
-version -showversion
-cp -classpath
  • X參數
非標準化參數
-Xint :解釋執行
-Xcomp : 第一次使用就編譯成本地代碼
-Xmixed: jvm決定是否編譯成本地代碼
  • XX參數
    Boolean類型
格式:-XX:[+-]<name>標識啓用或者禁用name屬性
案例:-XX:+UseG1Gc

    key=value類型
格式:-XX:<key>=<value> 表示name屬性的值是value
案例:-XX:MaxGcMillis=500

注意:-Xms等價於-XX:InitialHeapSize,-Xmx等價於-XX:MaxHeapSize

1.2 查看jvm運行時的參數

官方工具文檔
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.html

常用命令
-XX:+PringFlagsInital
    =表示默認值
    :=表示被用戶或者jvm修改後的值
-XX:+PringFlagsFinal
-XX:+UnlockExperimentalVMOptions //解鎖實驗參數
-XX:+UnlockDiagnosticVMOptions //解鎖診斷參數
-XX:PringCommandLineFlags  

jstat查看jvm統計信息
    類加載信息
    Gc信息
    jit編譯

jps
jinfo

1.3jmap+MAT內存溢出

1 導出內存映像文件

    1.1 內存溢出自動導出
        -XX:+HeapDumpOnOutOfMemoryError
        -XX:HeapDumpPath=./

    1.2 使用jmap命令手動導出
        jmap -help
        jmap -dump:format=b,file=heap.hprof pid

2 使用mat工具分析內存溢出

1.4 jstack查看線程狀態

// 查看java進程pid
jps -l
//將這個棧信息輸出到指定的文件
jstack  pid > pid.txt

top -H -p pid # 顯示某個進程所有活躍的線程消耗情況

1.5 基於JVisualVm的可視化監控

https://visualvm.github.io/documentation.html

1.6 基於Btrace的

https://www.jianshu.com/p/93e94b724476

BTrace是Java的安全可靠的動態跟蹤工具。 他的工作原理是通過 instrument + asm 來對正在運行的java程序中的class類進行動態增強.

攔截方法

    普通方法:@OnMethod(clazz="",method="",location=() )
    構造方法:@OnMethod(clazz="",method="<init>,location=() )
    同名方法:根據方法的參數類型區別

攔截時機
    Kind.ENTRY //入口,默認
    Kind.RETURN
    Kind.THROW
    Kind.LINE  //攔截第多少行的代碼

注意事項:調用自己本地的代碼。
    

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章