Я использую Clojure core.async в программе сервлета. Я подозреваю утечку памяти в программе, и я обнаружил, что общее количество живых потоков не уменьшается, когда я отменяю развертывание своего приложения с сервера приложений (Glassfish).
У меня вопрос: как я могу очистить неиспользуемые потоки core.async при отмене развертывания своего приложения?
Я понимаю, что core.async управляет своим собственным пулы потоков:
- Он использует кэшированный пул потоков для запуска
(thread)
макросов. Потоки в пуле автоматически очищаются после 60 секунд бездействия согласно документации. - Однако он использует фиксированный пул потоков для запуска воркеров. Явная ссылка shutdown должен был быть вызван, чтобы остановить этот пул потоков, но реализация пула потоков не видна публично.
Как можно отключить core.async при отмене развертывания приложения?
.shutdown
, который недоступен. - person erdos   schedule 14.12.2018executor-svc
закрыт как локальная переменная внутриthread-pool-executor
? - person akond   schedule 14.12.2018