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

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
javajvm

如何看懂字节码文件

2024-5-22 17:49:16

javajvm

synchronized 锁机制的分析和验证

2024-6-10 15:49:06

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧