[alibaba/arthas]通过API直接关闭session会导致SharingResultDistributor资源不释放的问题

2025-11-12 851 views
4
环境信息
  • arthas-boot.jar 或者 as.sh 的版本: 3.5.1
  • Arthas 版本: 3.5.1
  • 操作系统版本: Linux
  • 目标进程的JVM版本: JDK8
  • 执行arthas-boot的版本: JDK8
重现问题的步骤
  1. 启动arthas,attach到目标JVM进程
  2. 通过arthas的http接口开启一个session,init_session
  3. 通过arthas的http接口关闭上一个session,close_session
  4. 调用artha的shutdown接口,关闭arthas诊断
  5. 查看目标JVM进程的线程堆栈,发现存在名称为ResultDistributor的线程
期望的结果

session被关闭时,session相关的资源可以被及时释放

实际运行的结果
把异常信息贴到这里

回答

9

"2.通过arthas的http接口开启一个session,init_session 3.通过arthas的http接口关闭上一个session,close_session" 这两步是通过代码操作的么 我在本地用3.5.1版本操作时,通过console和web界面操作后,shutdown服务器后我看arthas开启的线程是都销毁了的

4

"2.通过arthas的http接口开启一个session,init_session 3.通过arthas的http接口关闭上一个session,close_session" 这两步是通过代码操作的么 我在本地用3.5.1版本操作时,通过console和web界面操作后,shutdown服务器后我看arthas开启的线程是都销毁了的

是通过close_session的http接口删除了session的时候,session对应的资源不会被释放。

shutdown的时候通常情况会释放资源,但是如果session被http接口close了的话,及时shutdown也不会释放session下的SharingResultDistributor资源