在 JVM 停止期间关闭由第 3 方 JAR 打开的 ScheduledThreadPoolExecutor
Shutdown ScheduledThreadPoolExecutor opened by 3rd party JAR during JVM stop
在 JVM 停止期间,很少 thread pool
没有正确关闭。由于这个 Perm Gen leak
发生,因为 class 加载器被限制被垃圾收集。
这些线程池由第 3 方应用程序 (Elasticsearch) 打开,除了 client
实例之外,我无法直接控制它。
client
实例确实为 shutting down
、scheduler
和 thread pool
提供了方法,但是这个错误没有得到纠正。 '
请帮忙。有什么方法可以获取 3rd Parties
ScheduledThreadPoolExecutor
的实例并通过 Java 应用程序关闭它?
参考这两篇文章解决的答案:
Plumbr 工具帮助提供了 class 加载程序泄漏参考和导致内存泄漏的线程的详细信息。
第 1 条:
这篇文章建议如何找出谁创建了导致内存泄漏的线程。
how to find out who create a thread in java?
@Aaron Digulla 的回答救了我。尤其是第4点和第5点。
第 2 条:
本文建议如何关闭客户端。
在 JVM 停止期间,很少 thread pool
没有正确关闭。由于这个 Perm Gen leak
发生,因为 class 加载器被限制被垃圾收集。
这些线程池由第 3 方应用程序 (Elasticsearch) 打开,除了 client
实例之外,我无法直接控制它。
client
实例确实为 shutting down
、scheduler
和 thread pool
提供了方法,但是这个错误没有得到纠正。 '
请帮忙。有什么方法可以获取 3rd Parties
ScheduledThreadPoolExecutor
的实例并通过 Java 应用程序关闭它?
参考这两篇文章解决的答案:
Plumbr 工具帮助提供了 class 加载程序泄漏参考和导致内存泄漏的线程的详细信息。
第 1 条: 这篇文章建议如何找出谁创建了导致内存泄漏的线程。
how to find out who create a thread in java?
@Aaron Digulla 的回答救了我。尤其是第4点和第5点。
第 2 条: 本文建议如何关闭客户端。