arthas使用

arthas使用

获取当前的实例属性值

vmtool

测试使用的类

@Service
public class UserService {
    @Value("${user.default.pwd}")
    private String userDefaultPwd;
}

配置文件 [可以使用appllo或者其他支持热更新配置的框架来测试属性是否刷新成功]
user:
  default:
    pwd: 123
 vmtool --action getInstances --className com.mystic.ycc.blog.service.UserService --limit 10
 ---
 @UserService[][
    @UserService[com.mystic.ycc.blog.service.UserService@5c9f06c9],
]

通过sc命令查找到加载 class 的 classloader。

 sc -d com.mystic.ycc.blog.service.UserService

--- 
 class-info        com.mystic.ycc.blog.service.UserService
 code-source       /D:/project/java/blog/target/classes/
 name              com.mystic.ycc.blog.service.UserService
 isInterface       false
 isAnnotation      false
 isEnum            false
 isAnonymousClass  false
 isArray           false
 isLocalClass      false
 isMemberClass     false
 isPrimitive       false
 isSynthetic       false
 simple-name       UserService
 modifier          public
 annotation        org.springframework.stereotype.Service
 interfaces
 super-class       +-java.lang.Object
 class-loader      +-org.springframework.boot.devtools.restart.classloader.RestartClassLoader@7d726f69
                     +-jdk.internal.loader.ClassLoaders$AppClassLoader@63947c6b
                       +-jdk.internal.loader.ClassLoaders$PlatformClassLoader@3bf9282b
 classLoaderHash   7d726f69

执行表达式获取实例属性值

vmtool --action getInstances -c 7d726f69 --className com.mystic.ycc.blog.service.UserService --express 'instances[0].userDefaultPwd'
或者
vmtool --action getInstances --classLoaderClass org.springframework.boot.devtools.restart.classloader.RestartClassLoader --className com.mystic.ycc.blog.service.UserService --express 'instances[0].userDefaultPwd'
---
@String[123]

热更新字节码

retransform

© 版权声明
THE END
喜欢就支持一下吧
点赞2 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片