Во-первых, вам не нужно вызывать GC вручную, и обычно это плохая идея.
Сказав это, неясно, что вы подразумеваете под "память постоянно увеличивается".
Если вы имеете в виду, что выделение памяти вашим приложением, наблюдаемое извне, увеличивается, то это нормально. Java будет распределять новые объекты настолько долго, насколько это возможно, и запускать GC только тогда, когда свободного места нет. Со стороны кажется, что JVM использует все больше и больше памяти.
Если вы имеете в виду, что JVM сообщает, что ей не хватает места в куче (т. Е. Выбрасывает OutOfMemoryError), то у вас есть проблема. Однако эта проблема не будет устранена при запуске GC. Вместо этого вам нужно запустить профилировщик памяти Java, чтобы найти источник утечки и устранить его.
(Справочная информация: утечки памяти Java немного отличаются от (например) утечек памяти C / C ++. В C / C ++ утечка происходит, когда ваше приложение игнорирует free
/ delete
объект, когда он больше не является В Java утечка памяти происходит, когда ваше приложение случайно сохраняет ссылку на объект, который больше не будет использоваться. Если GC считает, что приложение может снова использовать объект, оно не может восстановить это ... и, следовательно, объект остается вокруг.)