zoukankan      html  css  js  c++  java
  • 【arthas】 arthas命令记录

    一.下载安装arthas

    wget https://alibaba.github.io/arthas/arthas-boot.jar

    二.启动,退出,停止

    1.启动方法

    java -jar arthas-boot.jar

    2.退出当前指定的某一个arthas的命令

    Q 或者 Ctrl+C

     

    3.退出arthas[只能退出当前会话,arthas server并未停止执行]

    exit 或者 quit
    退出后可以通过 java -jar arthas-boot.jar 重连 arthas server服务

     

    4.完全退出arthas server

    使用 stop

    5.仪表盘

    dashboard
    堆内存信息
    
    heap 堆内存
    ps_eden_space : 对象被创建的时候首先存放的区域
    ps_survivor_space : eden space内存区域中经过垃圾回收后没有被回收的对象
    ps_old_gen: 存放新生代中经过多次垃圾回收仍然存活的对象(上面两个都是新生代)
    nonheap: 非堆内存(通常说的栈内存)
    code_cash: 存放JIT所编译的机器码
    metaspace: 永久代


    三.trace使用,查看方法内一级子方法调用耗时【往下的调用链路】

    1.基础使用示例:【也可以看出来整个调用栈中哪行抛出异常了throws Exception】

    trace 类路径 方法名
    trace com.test.ClassA methodB

    2.如果本方法调用次数很多,则只想捕获10次 的调用 就退出Q

    trace 类路径 方法名 run -n 10

    3.tracem默认不展示JDK方法调用耗时,如果想打印出来,需要显式设置 --skipJDKMethod false

    trace --skipJDKMethod false 类路径 方法名


    4.匹配多个类或多个函数

    trace -E com.test.ClassA|org.test.ClassB method1|method2|method3


    5.排查时间大于2ms的调用

    trace com.test.ClassA methodB '#cost > 2'

     


    四.stack使用,查看方法被调用的 调用链 【往上的调用链路】

    1.基本使用示例:

    stack com.test.ClassA methodB

     

     

     

    五. 反编译


    1. 查看具体 某个线程的 调用堆栈

    thread PID


    2.查看源码

    查看某个类的源码

    jad com.test.ClassA

    查看某个类某个方法的源码

    jad com.test.ClassA 方法A

    3.只查看源码

    jad --source-only com.test.ClassA


    4.

     

     

     

    六.查看具体函数

    1.基础使用示例:

    sm com.test.ClassA
    
    sm com.test.ClassA methodA

     

    2.查看某个函数的详细信息 加上属性 -d

    sm -d com.test.ClassA methodA

     

     

    七.查看JVM已经加载的类信息

    1.具体某个类的JVM加载信息 【如果它是接口,还会把实现类打印出来】

    sc -d com.test.ClassA


    2.正则匹配JVM加载类的信息

    sc -d com.test.Class*

    或者

    sc -d com.test.*B

     


    八.动态实时监控接口

    1.动态实时监控接口出入参和异常信息 层级是3层,捞取5次请求

    watch com.test.ClassA methodA '{params,returnObj,throwExp}' -v -n 5 -x 3 '1==1'

     

    2.同上,但是指定入参的第二个参数等于true的

    watch com.test.ClassA methodA '{params,returnObj,throwExp}' 'params[1] == true' -v -n 5 -x 3 '1==1'

     

    3.

     

    九.查看类的静态成员变量

    1.查看类的静态成员变量 层级是3层

    getstatic com.test.ClassA staticA -x 3

     

    十.查看某个Spring管理的Bean的属性值

    1.监听到拦截器请求的一个下标,得到一个数字

    tt -t -n 1 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter invokeHandlerMethod

    2.使用得到的下标进行替换,从上下文中获取到该Bean,就可以执行该Bean的方法了

    用得到的数字替换1002,taskExecutor就是bean的name, getBean("taskExecutor")之后就可以.该Bean提供的方法,或者直接查看该Bean的属性值
    
    taskExecutor 是举例的一个Bean的name,可以是xxx,也可以是你自己的Bean的name
    tt -i 1002 -w 'target.getApplicationContext().getBean("taskExecutor").getThreadPoolExecutor().getQueue().size()'

    3.或者直接查看该Bean的属性值,查看3层

    tt -i 1002 -w 'target.getApplicationContext().getBean("taskExecutor")' -x 3

    十一.

  • 相关阅读:
    PowerDesigner如何导出建表sql脚本(转)
    excel插入行时提示不能将对象移到工作表外,怎么解决!!
    Axure知识点
    移动互联网学习的点
    什么是大数据?
    [Android开源项目] GitHub开源项目总结 (转)
    程序员自我提高的几点建议 很实诚(转)
    程序员必须进行的10项投资(转)
    安卓版本的问题
    Android APK反编译详解(转)
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/15206636.html
Copyright © 2011-2022 走看看