sc

查看JVM已加载的类信息

“Search-Class” 的简写,这个命令能搜索出所有已经加载到 JVM 中的 Class 信息,这个命令支持的参数有 [d][E][f][x:]

参数说明

参数说明

参数名称 参数说明
class-pattern 类名表达式匹配
method-pattern 方法名表达式匹配
[d] 输出当前类的详细信息,包括这个类所加载的原始文件来源、类的声明、加载的ClassLoader等详细信息。如果一个类被多个ClassLoader所加载,则会出现多次
[E] 开启正则表达式匹配,默认为通配符匹配
[f] 输出当前类的成员变量信息(需要配合参数-d一起使用)
[x:] 指定输出静态变量时属性的遍历深度,默认为 0,即直接使用 toString 输出
class-pattern支持全限定名,如com.taobao.test.AAA,也支持com/taobao/test/AAA这样的格式,这样,我们从异常堆栈里面把类名拷贝过来的时候,不需要在手动把/替换为.啦。
sc 默认开启了子类匹配功能,也就是说所有当前类的子类也会被搜索出来,想要精确的匹配,请打开options disable-sub-class true开关

使用参考

例如, 查看类的静态变量信息, 可以用sc -df class-name

  1. $ sc -df org.apache.commons.lang.StringUtils
  2.  
  3. class-info org.apache.commons.lang.StringUtils
  4. code-source /Users/zhuyong/middleware/citrus-sample/petstore/web/target/petstore/WEB-INF/lib/commons-lang-2.4.jar
  5. name org.apache.commons.lang.StringUtils
  6. isInterface false
  7. isAnnotation false
  8. isEnum false
  9. isAnonymousClass false
  10. isArray false
  11. isLocalClass false
  12. isMemberClass false
  13. isPrimitive false
  14. isSynthetic false
  15. simple-name StringUtils
  16. modifier public
  17. annotation
  18. interfaces
  19. super-class +-java.lang.Object
  20. class-loader +-com.taobao.tomcat.container.context.loader.AliWebappClassLoader
  21. +-org.apache.catalina.loader.StandardClassLoader@1d44eef3
  22. +-sun.misc.Launcher$AppClassLoader@57a462c9
  23. +-sun.misc.Launcher$ExtClassLoader@6951a712
  24. fields modifier final,public,static
  25. type java.lang.String
  26. name EMPTY
  27. value
  28.  
  29. modifier final,public,static
  30. type int
  31. name INDEX_NOT_FOUND
  32. value -1
  33.  
  34. modifier final,private,static
  35. type int
  36. name PAD_LIMIT
  37. value 8192

原文: https://alibaba.github.io/arthas/sc.html