"What does “low on memory” even mean, especially on modern computers with near-infinite virtual memory?" is a question that I've been wondering about for a while.
"What does “low on memory” even mean, especially on modern computers with near-infinite virtual memory?" is a question that I've been wondering about for a while.
There is a performance trade off there, because if lots of memory is available, but we tighten the belt anyway, the application may perform less well due to running garbage collection when it could have gotten away with allocating more external memory. On the other hand, the application is then less of a "pig" with regard to other things in the system.
Software preempt huge amount of memory because it's assumed to be unlimited free virtual memory. Except the software is running within a container or an OS, within a virtual machine, on a physical machine, that's running another hundreds things like that more or less isolated from one another.
While the application may be aware of what memory it's really using, the layers above may not be able to tell exactly what's used or sitting idle. It's a major challenge to estimate and distribute resources appropriately.
After exhausting actual RAM, and swap - there's nowhere else to put things... so you'll crash anyway.
[0] https://www.amazon.co.uk/gp/product/0471941484 I think there's a 2nd edition but I can't find it.
Perhaps you're referring to this one [1]?
[1] https://www.amazon.co.uk/Garbage-Collection-Handbook-Managem...
Jones' website https://www.cs.kent.ac.uk/people/staff/rej/gc.html is excellent too.