Я хотел бы внести свой ответ на этот вопрос, даже если он старый. Меня мучила та же проблема (локальный поток gson не удалялся из потока запроса), и я даже успел перезапустить сервер всякий раз, когда ему не хватило памяти (что отстой!).
В контексте веб-приложения java, настроенного на режим dev (в котором сервер настроен на сброс при каждом изменении кода и, возможно, также в режиме отладки), я быстро узнал, что threadlocals может быть потрясающим и иногда быть болью. Я использовал Threadlocal Invocation для каждого запроса. Внутри Invocation. Иногда я также использовал gson для генерации своего ответа. Я бы обернул Invocation внутри блока try в фильтре и уничтожил бы его внутри блока finally.
То, что я заметил (у меня пока нет метрик, подтверждающих это), это то, что если я внес изменения в несколько файлов и сервер постоянно подпрыгивал между изменениями, я бы потерял терпение и перезапустил сервер быть точным) из IDE. Скорее всего, в противном случае я бы получил исключение «Недостаточно памяти».
Как мне удалось обойти это, так это включить реализацию ServletRequestListener в мое приложение, и моя проблема исчезла. Я думаю, что происходило то, что в середине запроса, если сервер несколько раз подпрыгивал, мои локальные потоки не очищались (включая gson), поэтому я получал бы это предупреждение о локальных потоках и два или три предупреждения позже, сервер зависнет. Когда ServletResponseListener явно закрывал мои локальные потоки, проблема gson исчезла.
Я надеюсь, что это имеет смысл и дает вам представление о том, как преодолеть локальные проблемы с потоками. Всегда закрывайте их вокруг места их использования. В ServletRequestListener проверьте каждую локальную оболочку потока и, если она все еще имеет действительную ссылку на какой-либо объект, уничтожьте ее в этот момент.
Я должен также отметить, что принято включать в состав локальный поток как статическую переменную внутри класса. Таким образом, вы можете быть уверены, что, уничтожив его в ServeltRequestListener, вам не придется беспокоиться о других экземплярах того же класса, висящих вокруг.