Patrick Ernst wrote: > Hi Greg. EPS and PS files in most apps seem to suck up memory. The > Scribus version is 1.3.3.1 on Suse 10. I was concerned that after > closing the file that Scribus didn't free the RAM.
AFAIK it can't; that's a pretty fundamental issue with the way memory allocation in C/C++ programs is done. I've explained in detail on the list before, and the archives have that, so I won't repeat it here. "Heap fragmentation" should get you started. There are ways to for an app to release RAM back to the OS, but they're rather convoluted, painful, and have their own problems, usually boiling down to the app essentially doing its own memory management implementation inside the OS's. You will find that the system swaps out the "unused but not freed" RAM. This is one of the reasons why modern OSes perform better with swap, and use swap even when they have extremely minimal memory pressure. It's not ideal, but it's generally alright. It's much better not to require such huge amounts of RAM in the first place. It *is* possible to allocate a large amount of RAM, use it, then free it back to the OS. It's just hard - you have to be very careful NEVER to let anything get allocated in the area above the large chunk that you won't have freed by the time you're done with the large chunk, otherwise you can't release any of that memory back to the OS. In a large app full of GUI code etc, that's unlikely to be practical to do reliably. I could easily be wrong here, as I'm getting a bit rusty on the low-level details (too much Java at uni). -- Craig Ringer
