Кэш изображений
Emacs кэширует изображения, чтобы отображать их повторно более эффективно. Когда Emacs отображает изображение, он ищет в кэше изображений существующую спецификацию изображения equal требуемой спецификации. Если совпадение найдено, изображение отображается из кэша. В противном случае Emacs загружает изображение обычным образом.
- Функция: image-flush spec &optional frame
-
Эта функция удаляет изображение со спецификацией spec из кэша изображений кадра frame. Спецификации изображений сравниваются с использованием
equal. Если frame —nil, по умолчанию используется выбранный кадр. Если frame —t, изображение сбрасывается во всех существующих кадрах.В текущей реализации Emacs каждый графический терминал имеет собственный кэш изображений, общий для всех кадров этого терминала (см. Несколько терминалов). Поэтому обновление изображения в одном кадре обновляет его также во всех остальных кадрах того же терминала.
Одно из применений image-flush — сообщить Emacs об изменении файла изображения. Если спецификация изображения содержит свойство :file, изображение кэшируется на основе содержимого файла в момент первого отображения изображения. Даже если впоследствии файл изменится, Emacs продолжит отображать старую версию изображения. Вызов image-flush удаляет изображение из кэша, заставляя Emacs повторно прочитать файл при следующей необходимости отобразить это изображение.
Ещё одно применение image-flush — экономия памяти. Если ваша программа на Lisp за сравнительно короткий промежуток времени создаёт большое количество временных изображений, намного меньший, чем image-cache-eviction-delay (см. ниже), вы можете самостоятельно удалять неиспользуемые изображения, вместо того чтобы ждать, пока Emacs сделает это автоматически.
- Функция: clear-image-cache &optional filter animation-filter
-
Эта функция очищает кэш изображений, удаляя из него все хранящиеся изображения. Если filter не указан или равен
nil, функция очищает кэш выбранного кадра. Если filter — кадр, она очищает кэш этого кадра. Если filter —t, очищаются все кэши изображений. В противном случае filter считается именем файла, и все изображения, связанные с этим именем файла, удаляются из всех кэшей изображений.Эта функция также очищает кэш анимации изображений — отдельный кэш, который Emacs поддерживает для анимированных многофреймовых изображений (см. Многофреймовые изображения). Если animation-filter не указан или равен
nil, функция очищает кэш анимации вместе с кэшами изображений, выбранными с помощью filter. В противном случае эта функция удаляет изображение со спецификациейeqanimation-filter только из кэша анимации, не очищая никакие кэши изображений. Это помогает уменьшить использование памяти после остановки анимации, если изображение всё ещё отображается.
Если изображение в кэше изображений не отображалось в течение заданного периода времени, Emacs удаляет его из кэша и освобождает связанную с ним память.
- Переменная: image-cache-eviction-delay
-
Эта переменная задаёт количество секунд, в течение которых изображение может оставаться в кэше без отображения. Если изображение не отображается в течение этого времени, Emacs удаляет его из кэша изображений.
В некоторых случаях, если количество изображений в кэше становится слишком большим, фактическая задержка перед удалением может быть меньше этого значения.
Если значение равно
nil, Emacs не удаляет изображения из кэша, кроме случаев, когда вы очищаете его явно. Этот режим может быть полезен для отладки.
- Функция: image-cache-size
Эта функция возвращает общий размер текущего кэша изображений в байтах. Например, изображение размером 200x100 с 24 битами на цвет будет занимать в кэше 60000 байт.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Image-Cache.html