Introduce a manageable SoftMaxHeapSize flag. When set, the GC should strive to not grow heap size beyond the specified size. But as the flag name suggests, this is a soft limit. In other words, the GC is allowed to grow the heap size beyond SoftMaxHeapSize if needed.
There are a few different use cases where this flag could be useful. For example, when you want to keep the heap footprint down, while maintaining the capability to deal with a temporary increase in heap space requirement. Or when you want to play it safe, with lots of margin, to increase confidence that you will not run into an allocation stall because of an unforeseen increase in allocation rate.
The SoftMaxHeapSize should not be allowed to be set to a value greater than the max heap size (-Xmx). When not set on the command-line, this flag should default to the max heap size.