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  //拦截第多少行的代码

注意事项:调用自己本地的代码。
    

 

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