arthas 增加对 classloader.toString() 结果的匹配

kcrjzv8t  于 2022-10-20  发布在  其他
关注(0)|答案(3)|浏览(103)

有些情况, classloader 可能有很多示例,它们之后的区别只是 toString() 函数返回结果不同。

为了能准确匹配到这个 classloader,不用每次都 -c 来指定 hashcode,考虑增加对 classloader.toString() 结果的匹配。

这样子,像 sc , classloader 等命令都能直达结果。

6jjcrrmo

6jjcrrmo1#

同样需要该功能

at0kjp5o

at0kjp5o2#

可能没太理解您的意思。为了省去查hashcode的步骤,比如增加一个参数 -ts ,输入 sc -ts {classloader name} {xxx} ,能查找出该classloader各个示例加载的符合{xxx}的类。
是要实现这种效果吗?@hengyunabc

ttvkxqim

ttvkxqim3#

@pandaapo

比如有一个 HelloClassLoader ,然后应用 new 了两个示例。

这样子,在搜索 sc --classLoaderClass HelloClassLoader 时,会返回

Found more than one classloader by class name, please specify classloader with '-c <classloader hash>'

因为 sc 是只匹配到一个 ClassLoader 时,才会正常工作。所以提示信息让用户用 -c 去指定 classloader hash 。

现在有的 ClassLoader.toString() 会返回不同的内容。比如 HelloClassLoader 重写了 toString() 函数,它会返回比如:

tom's HelloClassLoader
kit`s HelloClassLoader

那么我们可以增加一个参数,比如叫 --classLoaderStr

sc --classLoaderStr `tom's HelloClassLoader`  ClassA

这样子直接能返回 tom 这个 HelloClassLoader 示例里的结果。

相关问题