В идеале автоматический диспетчер памяти должен освобождать объекты, которые больше не будут использоваться приложением.
Было доказано, что невозможно с 100% точностью и во всех ситуациях определить, будет ли данный объект использоваться впоследствии. Вместо этого сборщики мусора используют «следующую лучшую вещь», которая заключается в том, что они выпускают объекты, которые достижимы : объект, к которому нельзя получить доступ из приложения, из-за отсутствия пути ссылок на этот объект, никогда больше не будет использоваться приложением, поскольку приложение не сможет даже заметить, что объект все еще существует. Это приближение, но это безопасно: GC не будет освобождать объект, который все еще используется, но он может не выпустить объект, который больше не будет использоваться, если этот объект кажется достижимым (т.е. приложение может все еще протянуть руку и схватить объект, если он того пожелает).
«Утечка памяти» - это ситуация, когда неиспользуемые объекты используют чрезмерное количество ОЗУ. Что такое «неординарный», зависит от приложения. Единственный неиспользованный объект редко является проблемой. Обычные важные утечки - это ситуации, когда неиспользуемые, но достижимые объекты накапливаются тысячами.