У нас есть многопоточный проект клиент-сервер, мы недавно обновили серверные приложения в 64-битной архитектуре. Решив множество проблем, наше приложение теперь неуклонно работает под большой нагрузкой. Но после этого периода приложение на сервере выходит из строя с ошибкой «Недостаточно памяти». В это время свободная память доступна в больших количествах, кажется, что проблема фрагментации памяти. Есть ли возможность дефрагментации памяти, некоторые инструменты? Или могут быть некоторые другие причины «вне памяти» в подобной ситуации? РаспределениеDelphi XE4 64-разрядная память
Память:
- Общий объем памяти: 96 ГБ
- Physical: 48GB
- Virtual: 48GB
- Количество свободной физической памяти в момент распада: 3GB
- Объем свободной виртуальной памяти во время краха: 45Gb
- Максимальный объем памяти, выделяемый на поток: 1GB
Возможно, вы можете найти или сконструировать диспетчер памяти, менее уязвимый для фрагментации в вашем конкретном сценарии. Для примера, что, если каждый поток будет иметь свой собственный пул кучи, чтобы все было свободным, когда поток заканчивается? –