参考文章:
arthas神器啊,直接执行某个方法,能够很好的观察输出。
设置输出内容为json
options json-format true
找到classloader
classloader -l
找到spring对象并执行方法
# 执行无参数
vmtool -c f2c488 --action getInstances \
--className org.springframework.context.ApplicationContext \
--express 'instances[0].getBean("globalCtxManager").obtGlobalStatistics()'
# 执行带参数的方法,其中参数是普通变量
vmtool -c f2c488 --action getInstances \
--className org.springframework.context.ApplicationContext \
--express 'instances[0].getBean("globalCtxManager").obtUserAliveStatus(1156083311884992513L)'
# 执行带参数的方法,其中参数是对象。如果需要构建对象,可以参考:
# https://juejin.cn/post/6844904013859651597#heading-16
vmtool -c f2c488 --action getInstances \
--className org.springframework.context.ApplicationContext \
--express 'instances[0].getBean("liveCoreService").searchLiveInfo((#demo=new com.uewell.ubirth.bus.live.bo.live.LiveInfoParam(), #demo.setId('12345L'),#demo))'
ognl -c 54acff7d '@io.netty.buffer.PooledByteBufAllocator@DEFAULT'
ognl -c f2c488 '@io.netty.util.internal.PlatformDependent@DIRECT_BUFFER_PREFERRED'