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