Unirest 线程泄漏

Unirest Thread Leak

我的网络应用程序似乎 运行 内存不足,我认为这是由于线程泄漏造成的。似乎线程被困在等待中,并且它变得越来越大,直到内存达到堆大小的顶部。在空闲且不使用 Web 应用程序时,线程大小在我的本地 Tomcat Web 应用程序服务器上增加。我对线程泄漏没有很好的理解,但我确信线程应该被释放以释放分配的内存。

我进行了线程转储,其中很多线程正在等待 com.mashape.unirest.http.utils.SyncIdleConnectionMonitorThread,如下所示。

"Thread-124" - Thread t@378
java.lang.Thread.State: TIMED_WAITING
at java.lang.Object.wait(Native Method)
- waiting on <44c53e01> (a com.mashape.unirest.http.utils.SyncIdleConnectionMonitorThread)
at com.mashape.unirest.http.utils.SyncIdleConnectionMonitorThread.run(SyncIdleConnectionMonitorThread.java:22)

Locked ownable synchronizers:
- None

"Thread-122" - Thread t@371
java.lang.Thread.State: TIMED_WAITING
at java.lang.Object.wait(Native Method)
- waiting on <3212c7ae> (a com.mashape.unirest.http.utils.SyncIdleConnectionMonitorThread)
at com.mashape.unirest.http.utils.SyncIdleConnectionMonitorThread.run(SyncIdleConnectionMonitorThread.java:22)

Locked ownable synchronizers:
- None

任何解决此问题的有用提示将不胜感激。

这似乎是 mashape Unirest 中的一个错误,如果您创建多个 unirest 实例,它不会关闭线程。

我已经开始使用 unirest 的 konghq 版本,它已经解决了这个问题。

可以在这里找到:https://mvnrepository.com/artifact/com.konghq/unirest-java