Утечка памяти при отключении Webapp при использовании OkHttp, ложная тревога или нет? - PullRequest
0 голосов
/ 24 октября 2019

OkHttp внутренне создает потоки для пула соединений и для некоторого сторожевого таймера. Я видел, как многие люди боролись с этим, когда закрывали приложение, используя эту библиотеку. Сами авторы, похоже, не желают заниматься этим (https://github.com/square/okhttp/issues/2482, «предельная выгода»). В частности, Tomcat жалуется на утечки памяти, поскольку потоки остались позади. Похоже, что они очищены в конечном итоге , иногда после довольно большой задержки. Итак, мой вопрос: есть ли на самом деле утечка памяти из-за этой проблемы? В конце концов потоки исчезают, поэтому это должно означать, что все это может быть собрано мусором. Правильно?

1 Ответ

1 голос
/ 25 октября 2019

Я один из тех авторов OkHttp, которым не нравится выгрузка кода Tomcat. Мы отправим нашу собственную абстракцию параллелизма в следующем младшем выпуске; подробности здесь . Это может сократить 60-секундную задержку между закрытием вашего последнего ответа и последним выходом из потока.

Вы не должны выполнять выгрузку кода в современных программах. Tomcat пришел из эпохи, когда JVM была долгоживущим контейнером;сегодня это Kubernetes или другая технология кластерной оркестровки. Стратегия выгрузки кода Tomcat вынуждает вас прыгать через неуклюжие проблемы управления. Если вы боретесь с загрузчиками классов или менеджерами по безопасности, вы тратите время на выдуманную проблему.

...