问题

  • 为什么arthas在attach springboot的业务class时候 需要优先执行sc命令?
  • classloader的hash值是用来干啥的?

1、核心知识点

  • 一个类可以被多个类加载器所加载。
  • tomcat破坏了双亲委派机制。
  • springboot 的fatja技术。

2、个人答案

2.1、为什么arthas在attach springboot的业务class时候 需要优先执行sc命令

img

2.2、classloader的hash值是用来干啥的?

一个类在springboot工程中,可能会出现被多个类加载器加载的情景,不同类加载器加载的类对应的命名空间不同,相当于不同的类。所以在arthas使用类的时候需要指定类加载器的hash值,用于确定命名空间。

3、参考文档

关于class.getClassLoader().getResourceAsStream()和class.getResourceAsStream()的用法

我真不信,这年头还有人能懂SpringBoot的ClassLoader加载机制

03-Arthas中class或classloader相关命令

[JVM监控及诊断工具GUI篇之Arthas(三):class、classloader相关指令](