В предыдущем вопросе я спросил возможные программные способы максимизации самого большого блока, выделяемого на LOH . Я все еще вижу проблемы, но теперь я пытаюсь понять, почему LOH, кажется, увеличивается и уменьшается в размерах, но я все еще вижу исключения OutOfMemoryException, которые соответствуют тому, что другие сообщали о том, что это происходит из-за фрагментации LOH ,
Почему один вызов, например, StringBuilder.EnsureCapacity может генерировать для меня исключение OutOfMemoryException, но другой вызов откуда-то еще приводит к увеличению размера LOH (согласно счетчикам производительности, он увеличивается и уменьшается)?