@schedule spring&httpclientimpl$selectormanger创建类加载器泄漏

tkclm6bt  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(194)

如果我正在创建一个具有 HTTPClient 并用 @Schedule ->afterwars取消部署应用程序(例如tomcat或jboss)我正在创建一个类加载器内存泄漏。
如果我删除 @Schedule 注解,取消部署后需要一些时间,但是 HttpClientImpl$SelectorManager 是gced。
我想 @Schedule 机修工与班级保持着软联系,因此 HTTPClient (这通常允许gced),但是 HttpClientImpl$SelectorManager 不明白这一点并保持开放?!
有没有人有类似的问题或者有什么想法?
马特:(我有3个 @Schedule 注解类/方法)

(openjdk build 11.0.9+11 lts,spring boot 2.4.4版)

col17t5w

col17t5w1#

这个 HttpClientImpl$SelectorManager 当它检测到所有操作都已终止,并且对 HttpClient 已经被释放了。但是,在发布所有引用的时间和 SelectorManager 线程注意到了。默认情况下,这可能长达3秒。
如果你观察到 SelectorManager 线程仍在运行-这可能是因为:
仍然有一些强有力的证据提到 HttpClient ,
一些请求仍在进行中
这个 SelectorManager 还没有注意到它可以终止

相关问题