使用Arthas做线上诊断

问题场景,

程序中有个静态变量定义如下:

class A{

private ConcurrentHashMap<String, String> paramsMap = GenIssuePackageOpr.getParamsMap();

}

现在需要不停机情况下直接改写字段 paramsMap 的值,

服务器通过tomcat直接部署的,将arthas包放到服务器上,

执行下面命令启动:java -jar arthas-boot.jar

提示:* [1]: 30348 org.apache.catalina.startup.Bootstrap

输入1然后回车

在这个spring项目中有

public class ApplicationContextUtils {
public static ApplicationContext applicationContext;
}
所以可以使用getstatic工具取到变量,查看里面的值,所以执行以下命令:

getstatic com.tcnp.common.utils.ApplicationContextUtils applicationContext 'getBean("a").paramsMap'

千万注意bean名首字母小写,类名A小写之后是a

输出略

,可以移除里面的元素了

getstatic com.tcnp.common.utils.ApplicationContextUtils applicationContext 'getBean("a").paramsMap.remove("000")'

当类A不是bean时,通过下面方式查看

getstatic com.tcnp.common.authys.A paramsMap -x 3

 

作者:jicing

出处:https://www.cnblogs.com/jicing/p/17310999.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   Jicing  阅读(42)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示