Сейчас приложение начинает с потребления памати в 1.5 Mb, при проверке (вручную подключаюсь из клиента, пытаюсь сгенерировать максимум нагрузки) — плавно растет до 8-9 Мб и останавливается на этой отметке (даже если я продолжаю творить хаос с клиентом).
Есть ещё одно, по идее приложение должно освобождать память (выгружая неиспользуемые части), но со временем потребление не уменьшается (судя по диспетчеру задач).
Потому вопрос: как убедиться, что память не убегает, и если все хорошо, то почему потребление останавливается на 8 Мб вместо того, чтобы уменьшится к начальному уровню?
освобождение памяти — крайне ресурсозатратный процесс. поэтому оно производится гарбэдж коллектором только по настоятельной просьбе самой системы, ну или регулярно, когда совсем нет другой загрузки
Сборщик мусора может физически не освобождать память, если когда-то для работы было нужно 8 Мб. Есть шанс что данный объем снова потребуется, в этом случае программа будет работать быстрее, если объекты уже созданы. Также есть такая штука, как фрагментация памяти. Часть памяти может вообще не использоваться и быть зарезервированной для уплотнения объектов например, от типа GC зависит. Кое-какие подробности тут например.