type
status
date
slug
summary
tags
category
icon
password

1、通过vmtool获取

  • --action getInstances:将获取的对象注入变量 instances 中,instances是一个数组
  • --limit 10: 一次只输出10个,减小服务器压力
  • -c 19469ea2: 指定类加载器的 hashCode,可以通过 sc -d [classFullName]获取类加载器的 hashCode
  • -x: 指定结果的展开层次,默认为1
  • --express: 参数执行指定的表达式。
1、查看 spring 所管理的所有的 bean 名称
2、查看具体的某个 bean 及其属性
3、调用 bean 的方法

2、通过watch获取

watch 只有在调用的时候才能获取到实例的值
  • class-pattern:类名表达式匹配
  • method-pattern:方法名表达式匹配
  • express:观察表达式
  • condition-express:条件表达式
  • [b] :在方法调用之前观察
  • [e] :在方法异常之后观察
  • [s] :在方法返回之后观察
  • [f] :在方法结束之后(正常返回和异常返回)观察
  • [E]:开启正则表达式匹配,默认为通配符匹配
  • [x:]:指定输出结果的属性遍历深度,默认为 1
  • [n:]:监听多少次就结束,默认100次
观察表达式的构成主要由 ognl 表达式组成
示例
参数名称
使用说明
watch classFullName methodName "{params,target,returnObj}"
观察某个方法的入参和调用方法的对象实例以及出参
watch classFullName methodName "{params}" "params[0].name=='155'" -x 2
条件表达式: 只有满足params[0].name=='155'的条件才输出打印
watch classFullName methodName "{params}" '#cost<200' "params[1]==173" -e -x 2
观察某方法并且参数2的值=173时&&抛出异常&&执行时间小于200MS时才观察
watch classFullName methodName '{params}' -n 5 -x 3 'returnObj instanceof java.lang.String
类型判断,多个使用 &&
watch classFullName methodName '{target.illegalArgumentCount}'
访问当前对象中的某个属性
watch classFullName methodName '{@classFullName@fieldName}'
获取类的静态字段、调用类的静态方法,可以是其他的类
watch classFullName methodName * '{params,@classFullName.testMethod()
调用类的静态方法

3、通过ognl获取

ognl 只能获取静态的类字段和方法。要使用 ognl 获取 Spring 容器的示例的步骤如下:
1、项目有一个实现了 ApplicationContextAware 接口的工具类 SpringContextUtil
2、获取 SpringContextUtil 的类加载器
3、通过SpringContextUtil的调用 Bean 的方法
Ognl语法基础教程Mysql系列:Mysql检查运行情况常用命令
mcbilla
mcbilla
一个普通的干饭人🍚
Announcement
type
status
date
slug
summary
tags
category
icon
password
🎉欢迎来到飙戈的博客🎉
-- 感谢您的支持 ---
👏欢迎学习交流👏