Просто вычисляем предельное (максимальное) значение один раз на старте. Ведем статистику сколько уже распределено. Сравниваем выделено - предел, напр.
Так а какое максимальное значение будет для 256, 512, 768, 1024, ... Мб
И почему ты думаешь, что при запуске одной и той же программы на одном и том же железе, ОС будет предоставлять одинаковое количество физической памяти?
Что пытаемся достичь такими расчетами размера буфера, если в любой момент времени ОС может забрать всю физическую память этого буфера выгрузив его в своп?
Для чего все это?