После недавнего развертывания в системном тесте один из наших сервлетов попал гораздо сильнее, чем обычно, и мы заметили, что началось сканирование памяти, и веб-журнал в конечном итоге умрет. Мой стажер, я был очень горд, обнаружил источник утечки памяти.
Всякий раз, когда приходит запрос, эта строка вызывается:
JAXBContext jc = JAXBContext.newInstance("ruby.oracle_servlet.schemas");
По какой-то причине объект никогда не получает сбор мусора. Когда мы сделали его статическим и перемещали там, где мы его инициализировали, наша утечка памяти исчезла.
Еще один из наших разработчиков разместил эту строку в цикле while в автономном java-приложении, а также увидел, что память ползет вверх и вверх.
Есть ли у кого-нибудь идеи, почему этот объект не получает сбор мусора?
Спасибо