问题场景,
程序中有个静态变量定义如下:
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("iterationIssues").paramsMap'
千万注意bean名首字母小写
输出略
,可以移除里面的元素了
getstatic com.tcnp.common.utils.ApplicationContextUtils applicationContext 'getBean("iterationIssues").paramsMap.remove("000")'
完成
标签:applicationContext,ApplicationContextUtils,paramsMap,utils,jar,诊断,做线,Arthas,gets From: https://www.cnblogs.com/za-ill-ds/p/17310999.html