Устранение утечек памяти в Java

Неопытные программисты часто думают, что автоматическая сборка мусора в Java полностью освобождает их от проблемы управления памятью. Это популярное заблуждение: несмотря на то, что сборщик мусора делает все, что в его силах, даже самый лучший программист может пасть жерствой разрушительных утечек памяти. Позвольте объяснить.

Утечка памяти возникает в случае, когда вы продолжаете хранить ссылки на объекты, которые больше не нужны. Эти утечки —  зло. Во-первых, они добавляют ненужную нагрузку на ваше устройство, поскольку ваши программы потребляют все больше и больше ресурсов. Мало того, порой эти утечки трудно обнаружить: статический анализ часто не в силах точно определить эти избыточные ссылки, а существующие инструменты для обнаружения утечек отслеживают и предоставляют лишь крупинки информации об индивидуальных объектах. Результаты их работы тяжелы в интерпретации и им не хватает точности.

Другими словами, утечки либо слишком сложно обнаружить, либо результаты их обнаружения настолько специфичны, что приносят мало пользы. Continue reading