Я не понимаю, как этот код может воспроизвести проблему.После того, как значение Looper увеличится до 45, должно быть почти закончено потребление любой памяти.
Общая диагностика заключается в том, что программе очень редко удается использовать всю возможную доступную виртуальную память.Сначала он умрет, найдя кусок непрерывных байтов внутри кучи, достаточно большой для хранения буфера потока строк.Это называется фрагментация адресного пространства, с этим ничего нельзя поделать.Ваш вызов Sleep (), безусловно, не принесет ничего полезного, для объединения выделенных блоков кучи требуется сборщик мусора.
Еще одна довольно стандартная ловушка - это использование TaskMgr.exe для диагностики использования памяти.Обычно он отображает рабочий набор, объем виртуальной памяти, который отображается в ОЗУ.Обычно это лишь часть объема виртуальной памяти, потребляемой вашей программой, и она не может дать точную оценку объема виртуальной памяти, потребляемой вашей программой.Или расскажите что-нибудь о фрагментации адресного пространства.
Утилита VMysap от SysInternals может показать вам, как ваша программа использует виртуальную память.