Subject: Re: bug#38187: 27.0.50; No mouse-wheel scaling on images

From: Juri Linkov <[email-masked]>
Date: Fri, 22 Nov 2019 00:57:24 +0200

>> BTW, while testing it for image scaling on a quite small image file,
>> Emacs consumed several GB of all available memory and almost all swap,
>> before I noticed and evaluated M-: (clear-image-cache) that freed memory.
>>
>> Memory leak?
>
> No, it's just that Emacs' image cache is very primitive.  You can easily
> get Emacs to go out-of-memory by just doing a
>
> (dolist (file (directory-files dir-with-lots-of-images))
>   (erase-buffer)
>   (insert-image (create-image file)))
>
> You get the same effect by altering the scaling factor, I think?  Each
> scaled image is cached?  So by rolling the wheel ten clicks you get ten
> cached copies of the image.
>
> A better eviction algorithm would be nice.

Currently the default value of image-cache-eviction-delay is
300 seconds.

But the documentation also says:

  "If the cache contains a large number of images,
   the actual eviction time may be shorter."

And code has this comment:

  /* If the number of cached images has grown unusually large,
     decrease the cache eviction delay (Bug#6230).  */

Does this mean the number of cached images was not large enough?