В jave программист не может сам высвободить память. Объекты живут, пока на них есть ссылки. Когда последняя ссылка теряется, объект становится мусором, то есть, продолжает жрать память, хотя использовать его нельзя.

За счет этого повышается надежность и простота программирования (может, это одна из причин, почему Ил-2 на java'е написан).

Но если мусора становится слишком много и память кончается, его необходимо собрать. Для этого вызывается мусорщик, который мусор убивает и реально высвобождает память.