Guice 3.0 + Tomcat 7.0 = утечка памяти ClassLoader

Я знаю, что эта проблема существует уже как минимум 3 года ( Issue 92 ), но я все еще не доволен текущим состоянием. Я также знаю, что это не повлияет на Tomcat, если вы перезапустите его после повторного развертывания (как предлагается в Guice + Tomcat потенциальная утечка памяти ).

Моя проблема в том, что у меня возникают ошибки OutOfMemoryError: PermGen после некоторых повторных развертываний. Обратите внимание, что я не использую google-коллекции явно, я использую только Guice 3.0 (через maven). После анализа дампа кучи я все еще вижу, что поток com.google.inject.internal.Finalizer все еще активен, сохраняет ссылку на Tomcat WebappClassLoader, тем самым препятствуя сборке мусора.

Что, если мне действительно требуется повторное развертывание без перезапуска, и я использую Guice? Какие у меня есть варианты?

11
задан Community 23 May 2017 в 10:29
поделиться