После недавнего развертывания в системном тесте один из наших сервлетов получал удар намного сложнее обычного, и мы заметили, что началось сканирование памяти, и веб-журнал в конечном итоге умрет. Мой стажер, я был очень горд, обнаружил источник утечки памяти.Ошибка утечки памяти JAXBContext.newInstance
Всякий раз, когда приходит запрос, эта строка вызывается:
JAXBContext jc = JAXBContext.newInstance(“ruby.oracle_servlet.schemas”);
По какой-то причине, объект никогда не будет мусора. Как только мы сделали его неподвижным и перемещенным там, где мы его инициализировали, наша утечка памяти исчезла.
Еще один из наших разработчиков поместил именно эту строку в цикл while в автономном приложении java, а также увидел, что память ползет вверх и вверх.
Есть ли у кого-нибудь идеи, почему этот объект не получает сбор мусора?
Благодаря
Ссылка обновлена: http://jaxb.java.net/guide/Performance_and_thread_safety.html –
@ThangPham - Спасибо, я обновил свой ответ с новой ссылкой, которую вы предоставили. –
Это также известная проблема с выпуском JAXB для Java 7? Решение, которое вы дали, все равно будет иметь место, но было бы хорошо знать, стоит ли еще активно следить за этим. –