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