SystemEvents.LowMemory doesn't seem to work, at least not the way it's documented.


I wrote a little app that added a handler for the LowMemory event:

SystemEvents.LowMemory += new EventHandler(SystemEvents_LowMemory);

And then went mad allocating memory:

// Go mad allocating memory
int iters = 0;
while (true)
   // Add a meg
   myJunk.Add(new byte[1024*1024]);
   Console.WriteLine("Allocated " + iters.ToString() + " mb");

It got up to 1035mb (which is past when I would have liked the event to fire) and then threw an OutOfMemoryException (without hitting the breakpoint I had in the SystemEvents_LowMemory handler.


I'd like to experiment with using “free“ memory (memory the system doesn't currently have another use for) as cache in my own apps, but I need to know when the system wants some memory back.  Maybe there's another way.