В течение последнего месяца наблюдались большие утечки памяти в Finder, особенно в представлениях «Значки» и «Галерея». Разработчик Macs Technology выяснил, что это происходит не из-за утечки, а кэширования миниатюр элементов, выбранных в представлении галереи.
В некоторых окнах Finder, особенно в представлениях «Галерея» и «Значки», элементы могут отображаться в виде больших значков; в случае файлов изображений и фильмов это обычно миниатюры, созданные QuickLook на основе содержимого файла. Создание таких миниатюр — относительно дорогостоящий процесс, поэтому QuickLook хранит их в кэше. Даже в этом случае при прокрутке содержимого папок, содержащих множество таких пользовательских значков и миниатюр, извлечение их всех из кэшированных файлов может быть медленнее, чем скорость прокрутки.
Чтобы повысить производительность, Finder сохраняет копии этих изображений в памяти. Кэшированные миниатюры могут храниться до 2–3 дней перед очисткой.
Если представления «Галерея» или «Значки» используются редко, то это мало влияет на память, используемую Finder. Однако при частых просмотрах больших папок инструмент может кэшировать несколько ГБ изображений. По опыту разработчика с использованием режима «Галерея», объём памяти может достигать 1,5 ГБ на каждые 100 файлов картинок.
Он протестировал на iMac Pro с 32 ГБ ОЗУ и macOS 14.2 папку, содержащую около 100 фотографий, в основном в формате JPEG, выбирая различные их комбинации в представлении «Галерея». За несколько минут использование памяти Finder выросло с примерно 250 МБ до чуть более 1,8 ГБ. Дальнейший выбор в этом представлении «Галерея» не оказал дальнейшего влияния на используемую память.
Следующие два дня ПК использовался как обычно, без возврата в эту папку или повторного просмотра галереи, но он не переводился в спящий режим, а также не выключался или перезагружался. Периодически разработчик проверял использование памяти Finder с помощью Activity Monitor. Результаты показаны на диаграмме ниже.
Период, в течение которого использование памяти в представлении «Галерея» увеличилось, отмечен жёлтым цветом, а линия показывает использование этой памяти в Finder. В последующие дни объём использования памяти неуклонно рос, достигнув пика чуть более 2 ГБ к утру 18 декабря. Затем, спустя чуть более двух дней с тех пор, как разработчик в последний раз использовал представление «Галерея», Finder удалил кэшированные миниатюры из этого сеанса.
Собственная документация Apple для разработчиков по управлению памятью начинается словами: «Эффективное управление памятью — важный аспект написания высокопроизводительного кода как в OS X, так и в iOS. Минимизация этого использования не только уменьшает объём памяти вашего приложения, но также может уменьшить количество потребляемого процессорного времени».
Однако для компьютеров Mac, где базовая память составляет 8 ГБ, потребление всего одним приложением более 1 ГБ становится ощутимым. При этом стоимость дополнительных 8 ГБ в настоящее время составляет около $200. В этих последних компьютерах Mac память совместно используется процессором, графическим процессором и другими элементами.
Выходом могло бы стать расширение настроек Finder, чтобы пользователь мог сам выбирать максимальный размер миниатюр и связанных с ними кэшей.