写点什么

Arthas sc(查看 JVM 已加载的类信息 )

作者:刘大猫
  • 2025-04-24
    黑龙江
  • 本文字数:7948 字

    阅读完需:约 26 分钟


@[toc]

二、命令列表

2.2 class/classloader 相关命令

2.2.5 sc(查看 JVM 已加载的类信息 )

提示:

“Search-Class” 的简写,这个命令能搜索出所有已经加载到 JVM 中的 Class 信息;

class-pattern 支持全限定名,如 com.taobao.test.AAA,也支持 com/taobao/test/AAA 这样的格式,这样,我们从异常堆栈里面把类名拷贝过来的时候,不需要在手动把/替换为.啦。

sc 默认开启了子类匹配功能,也就是说所有当前类的子类也会被搜索出来,想要精确的匹配,请打开 options disable-sub-class true 开关,这个命令支持的参数有 [d][E][f][x:]


参数说明:



问题:getstatic 命令和 sc 命令区别是啥?


答案:getstatic 命令用于获取特定类的静态字段的值,而 sc 命令可以一次性显示一个类的所有静态字段及其值。这使得 sc 更适合快速查看类的整体状态。


代码


/** * 定时任务缓存 ,用于状态记录 */public class SMTaskCache{    private static SMTaskCache instance = new SMTaskCache();
// 缓存 public static final Vector<SmconfigDmTaskMain> taskCache = new Vector<>();
// 读写锁 private final static ReadWriteLock lock = new ReentrantReadWriteLock();
public static SMTaskCache getInstance() { return instance; }}
复制代码

举例 1:模糊搜索,xx 包下所有的类

基础语法

sc xx 包.*


[arthas@18139]$ sc com.hero.lte.ems.sysmanager.cache.*com.hero.lte.ems.sysmanager.cache.AmNeRefCachecom.hero.lte.ems.sysmanager.cache.SMTaskCachecom.hero.lte.ems.sysmanager.cache.SmQuartzTaskCachecom.hero.lte.ems.sysmanager.cache.SmTriggerTaskCacheAffect(row-cnt:4) cost in 46 ms.[arthas@18139]$
复制代码

举例 2:打印类的详细信息

基础语法

sc -d 全路径类名


[arthas@18139]$ sc -d com.hero.lte.ems.sysmanager.cache.SMTaskCache class-info        com.hero.lte.ems.sysmanager.cache.SMTaskCache                                                                                                                                                                         code-source       /home/ems/ems_eam/app/ems-eam-sysmanager-server-1.0-SNAPSHOT.jar                                                                                                                                                      name              com.hero.lte.ems.sysmanager.cache.SMTaskCache                                                                                                                                                                         isInterface       false                                                                                                                                                                                                                 isAnnotation      false                                                                                                                                                                                                                 isEnum            false                                                                                                                                                                                                                 isAnonymousClass  false                                                                                                                                                                                                                 isArray           false                                                                                                                                                                                                                 isLocalClass      false                                                                                                                                                                                                                 isMemberClass     false                                                                                                                                                                                                                 isPrimitive       false                                                                                                                                                                                                                 isSynthetic       false                                                                                                                                                                                                                 simple-name       SMTaskCache                                                                                                                                                                                                           modifier          public                                                                                                                                                                                                                annotation                                                                                                                                                                                                                              interfaces                                                                                                                                                                                                                              super-class       +-java.lang.Object                                                                                                                                                                                                    class-loader      +-sun.misc.Launcher$AppClassLoader@18b4aac2                                                                                                                                                                                               +-sun.misc.Launcher$ExtClassLoader@232204a1                                                                                                                                                                         classLoaderHash   18b4aac2                                                                                                                                                                                                             
Affect(row-cnt:1) cost in 33 ms.[arthas@18139]$
复制代码

举例 3:打印出类的 Field 信息

基础语法

sc -df 全路径类名


[arthas@18139]$ sc -df com.hero.lte.ems.sysmanager.cache.SMTaskCache class-info        com.hero.lte.ems.sysmanager.cache.SMTaskCache                                                                                                                                                                         code-source       /home/ems/ems_eam/app/ems-eam-sysmanager-server-1.0-SNAPSHOT.jar                                                                                                                                                      name              com.hero.lte.ems.sysmanager.cache.SMTaskCache                                                                                                                                                                         isInterface       false                                                                                                                                                                                                                 isAnnotation      false                                                                                                                                                                                                                 isEnum            false                                                                                                                                                                                                                 isAnonymousClass  false                                                                                                                                                                                                                 isArray           false                                                                                                                                                                                                                 isLocalClass      false                                                                                                                                                                                                                 isMemberClass     false                                                                                                                                                                                                                 isPrimitive       false                                                                                                                                                                                                                 isSynthetic       false                                                                                                                                                                                                                 simple-name       SMTaskCache                                                                                                                                                                                                           modifier          public                                                                                                                                                                                                                annotation                                                                                                                                                                                                                              interfaces                                                                                                                                                                                                                              super-class       +-java.lang.Object                                                                                                                                                                                                    class-loader      +-sun.misc.Launcher$AppClassLoader@18b4aac2                                                                                                                                                                                               +-sun.misc.Launcher$ExtClassLoader@232204a1                                                                                                                                                                         classLoaderHash   18b4aac2                                                                                                                                                                                                              fields            name     instance                                                                                                                                                                                                                       type     com.hero.lte.ems.sysmanager.cache.SMTaskCache                                                                                                                                                                                  modifier private,static                                                                                                                                                                                                                 value    com.hero.lte.ems.sysmanager.cache.SMTaskCache@6ac3ae9f                                                                                                                                                                                                                                                                                                                                                                                                                 name     taskCache                                                                                                                                                                                                                      type     java.util.Vector                                                                                                                                                                                                               modifier final,public,static                                                                                                                                                                                                            value    [SmconfigDmTaskMain [sysTaskId=12017001, sysTaskType=null, neTypeId=null, moduleId=5, sysTaskName=Operation Log backup delete task, sysTaskState=2, sysTaskNextTime=Fri Sep 13 02:50:00 CST 2024, sysTaskL                              astTime=null, sysTaskLastResult=null, sysTaskOsType=2, sysTaskTimeout=500, sysTaskWhetherDel=0, sysTaskCreateTime=null, sysTaskCreateUser=null, sysTaskEditPeople=null, sysTaskEditTime=null, sysTaskEfitR                              emark=Operation Log backup delete task, sysTaskNextOs=Succeeded, taskSwitch=1, sysTaskExeMod=0, sysTaskErrorMod=0, sysTaskWhetherInfo=null, systemId=null, sysTaskBegTime=Fri Aug 30 00:00:00 CST 2024, sy                              sTaskEndTime=null]]                   name     lock                                                                                                                                                                                                                           type     java.util.concurrent.locks.ReadWriteLock                                                                                                                                                                                       modifier final,private,static                                                                                                                                                                                                           value    java.util.concurrent.locks.ReentrantReadWriteLock@52dcc92f[Write locks = 0, Read locks = 0]         Affect(row-cnt:1) cost in 24 ms.[arthas@18139]$                             
复制代码

本人其他相关文章链接

1.Arthas 全攻略:让调试变得简单2.Arthas dashboard(当前系统的实时数据面板)3.Arthas thread(查看当前JVM的线程堆栈信息)4.Arthas jvm(查看当前JVM的信息)5.Arthas sysprop(查看和修改JVM的系统属性)6.Arthas sysenv(查看JVM的环境变量)7.Arthas vmoption(查看和修改 JVM里诊断相关的option)8.Arthas getstatic(查看类的静态属性 )9.Arthas heapdump(dump java heap, 类似 jmap 命令的 heap dump 功能)10.Arthas logger(查看 logger 信息,更新 logger level)11.Arthas mbean(查看 Mbean 的信息)12.Arthas memory(查看 JVM 内存信息)13.Arthas ognl(执行ognl表达式)14.Arthas perfcounter(查看当前 JVM 的 Perf Counter 信息)15.Arthas vmtool(从 jvm 里查询对象,执行 forceGc)16.Arthas jad(字节码文件反编译成源代码 )17.Arthas mc(Memory Compiler/内存编译器 )18.Arthas redefine(加载外部的.class文件,redefine到JVM里 )19.Arthas classloader (查看 classloader 的继承树,urls,类加载信息)20.Arthas sc(查看JVM已加载的类信息 )21.Arthas sm(查看已加载类的方法信息 )22.Arthas monitor(方法执行监控)23.Arthas stack (输出当前方法被调用的调用路径)24.Arthas trace (方法内部调用路径,并输出方法路径上的每个节点上耗时)25.Arthas tt(方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测)26.Arthas watch (方法执行数据观测)27.Arthas profiler(使用async-profiler对应用采样,生成火焰图)

用户头像

刘大猫

关注

还未添加个人签名 2022-08-23 加入

还未添加个人简介

评论

发布
暂无评论
Arthas sc(查看JVM已加载的类信息 )_人工智能_刘大猫_InfoQ写作社区