2012-01-20 2 views
1

Я использую ThreadSafeClientConnManager для многопоточности в приложении Java. Мой объект ThreadSafeClientConnManager является статическим, поэтому он остается до тех пор, пока приложение не будет запущено.Что произойдет, если я никогда не вызову closeExpiredConnections с ThreadSafeClientConnManager

Что произойдет, если я никогда не звоню closeExpiredConnections() или closeIdleConnections()?

Будет ли это сбой моего приложения в конечном итоге?

ответ

1

Предполагается, что вы используете httpcmponents-client 4.1.2, который является текущим GA.

Судя по коду и javadocs, ничего плохого не произойдет. ThreadSafeClientConnManager имеет разумные пределы. Если вы не изменили пределы вверх, в конечном счете пул заполнится, и старые соединения будут выведены.

Одна из сторон будет заключаться в том, что вы держитесь за простоя и с истекшим соединением, в котором хранятся ресурсы (файлы) и объекты, которые не нужны. Но опять же, если вы не изменили значения по умолчанию, количество этих ресурсов невелико по сравнению с тем, что доступно: 20 дескрипторов файлов из всего 1000 доступных в системе linux.

Вкратце: это не приведет к сбою приложения.

PS Эти библиотеки имеют доступный источник, вы должны сами убедиться, какие последствия.

Смежные вопросы