在JVM停止期间由第三方JAR关闭ScheduledThreadPoolExecutor

时间:2016-01-18 14:52:09

标签: mongodb threadpool permgen

在JVM停止期间,thread pool中的一些未正确关闭。由于此Perm Gen leak发生,因为类加载器被限制为收集垃圾。

这些线程池由第三方应用程序(Elasticsearch)打开,除了client实例之外,我没有任何直接控制权。

client实例确实为shutting down schedulerthread pool提供了方法,但此错误未得到纠正。 “

请帮忙。有没有什么方法可以获取3rd Parties ScheduledThreadPoolExecutor的实例并通过Java应用程序关闭它?

1 个答案:

答案 0 :(得分:0)

通过引用这两篇文章解决了答案:

Plumbr工具帮助提供了类加载器泄漏引用和导致内存泄漏的线程细节。

第1条: 本文建议如何找出导致内存泄漏的Thread创建者。

how to find out who create a thread in java?

@Aaron Digulla的回答救了我。特别是第4和第5点。

第2条: 本文建议如何关闭客户端。

http://forum.spring.io/forum/spring-projects/data/nosql/118557-mongo-application-fails-to-stop-thread-mongocleaner-with-redeploy-or-restart-tomcat