Одна из наших программ иногда получает ошибку OutOfMemory
на одной пользовательской машине, но, конечно, не тогда, когда я ее тестирую. Я просто запускал его с помощью JProfiler (на 10-дневной оценочной лицензии, потому что я никогда не использовал ее раньше) и отфильтровывая наш префикс кода, самый большой кусок как в общем размере, так и в количестве экземпляров - это 8000+ экземпляров определенного простого класса,
Я нажал кнопку "Сбор мусора" на JProfiler, и большинство экземпляров других наших классов ушли, но не эти конкретные. Я снова проверил тест, все еще в том же экземпляре, и он создал более 4000 экземпляров класса, но когда я нажал "Сбор мусора", они ушли, оставив 8000+ оригинальных.
Эти экземпляры застряли в разных коллекциях на разных этапах. Я предполагаю, что тот факт, что они не собираются на сборку мусора, должен означать, что что-то держится за ссылку на одну из коллекций, чтобы удерживать ссылку на объекты.
Любые предложения, как я могу понять, что держится за ссылку? Я ищу предложения о том, что искать в коде, а также о способах найти это в JProfiler, если они есть.