У меня проблема с утечкой памяти Java, которая по какой-то причине не отображается в моем профайлере (Yourkit). Когда я запускаю свое Java-приложение (сервер с несколькими потоками для прослушивания, отправки и обработки данных), кажется, что каждый раз, когда я получаю новое соединение, и это соединение удаляется, некоторая память не очищается. По крайней мере, так говорят Windows (и Linux).
Когда я запускаю свое приложение с помощью своего профилировщика, оно просто показывает память, какой она должна быть, когда поток закрывается, вся память очищается. Однако в действительности через некоторое время Java просто рухнул, потому что он использует слишком много памяти, поэтому независимо от того, что говорит мой профилировщик, я склонен полагать, что Windows и Linux используют его. Запуск сборки мусора также не очищает память.
Так что бы это могло быть? Я перепробовал все, что знаю, закрыл потоки, установил все объекты на нуль, удалил содержимое каждого массива и т. Д. Я почти уверен, что потоки закрыты, потому что и затмение, и компилятор, и распечатки, кажется, подтверждают это.
У кого-нибудь есть подсказка?