arthas使用
获取当前的实例属性值
测试使用的类
@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]
热更新字节码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END