Я работаю над приложением, которое потенциально способно к большой загрузке памяти (> 5 ГБ), но требует работы на 32-битных и .NET 2 настольных компьютерах из-за среды развертывания клиента. Мое решение до сих пор состояло в том, чтобы использовать хранилище данных в масштабе приложения для этих объектов большого объема, когда объект назначается хранилищу, хранилище проверяет общее использование памяти приложением и приближается ли оно к пределу. начнет сериализацию некоторых старых объектов в хранилище во временную папку пользователя, извлекая их обратно в память по мере необходимости. Это оказывается явно ненадежным, так как если другие объекты в приложении начинают использовать память, хранилище не имеет подсказки, чтобы очистить и освободить место. Я смотрел на использование слабых указателей для хранения объектов данных в памяти, когда они были сериализованы на диск после их освобождения, однако объекты, казалось, освобождались почти сразу, особенно при отладке, что приводило к значительному снижению производительности в приложении. сериализовал все.
Существуют ли какие-либо полезные шаблоны / парадигмы, которые я должен использовать, чтобы справиться с этим? Я много гуглил, но пока не нашел ничего полезного.