Only decommit parts of regions and the mark array when memory is low. (#56730)
We'll decommit completely free regions if they exceed the budget, but as we'll use the available memory in regions *not* on the free list preferentially, it seems smarter to decommit the tail ends of these regions only when memory is low.
In a simple GCPerfSim Scenario (-tc 10 -tagb 1000 -tlgb 1 on a 10-core box) this made about a 10% difference in run time, the time saved is mainly in the OS - VirtualFree, VirtualAlloc, and KiPageFault.