Могу ли я предложить вам попробовать с меньшим размером буфера?
Проблема может заключаться в том, что вы неоднократно выделяете блок памяти, размер которого превышает 85000 байт, и который попадает в специальную кучу (кучу больших объектов), которая, к сожалению, никогда не сжимается!
См. здесь для подробного объяснения того, как работает куча больших объектов.
К сожалению, это может привести к серьезной фрагментации кучи и в конечном итоге вызвать ошибку нехватки памяти, подобную той, которую вы описываете (см. Здесь: фрагментация loh вызывает исключение OutOfMemory )
Если вы выделите более мелкие куски (менее 85 000 байтов), тогда они будут размещены в обычной куче, тогда сборщик мусора сможет выполнить сжатие и почти наверняка ваша проблема исчезнет. Я бы также настоятельно рекомендовал вам изменить ваш код, как предложено @Nanhydrin, так как это позволяет избежать повторного выделения и должно работать немного лучше