Geany does not edit anything but text files, and it _does_ check that the file is text (UTF-8), so it has to read the file, thats 3.9Gb gone just to start with ;-). But since most files do not indicate their encoding, it is also necessary to check if there is an encoding that might convert to text successfully, and that can use an unknown multiple of the file size as Geany tries each encoding it knows.
There have been various requests to not do slow/expensive things on large files, but nobody has ever identified a sensible way of determining a limit, a memory/CPU limit on a 64Gb workstation might not be appropriate on a 4Gb Raspberry Pi. So it comes down to Geany will do what its told, so don't tell it to do "bad" things.