В консольном приложении x64 .NET я загружаю большую справочную таблицу в Dictionary<object, object>
.В этом конкретном случае и ключ, и значение являются строками, но приложение должно быть независимым.Строки состоят из 12 однобайтовых символов и 15-17 однобайтовых символов каждая (цифры и az).Таблица поиска содержит ~ 55 миллионов записей.
Мне нужно загрузить ее в оперативную память для повышения производительности, база данных не будет отличной.
Проблема в том, что после загрузки около 49 миллионов записей я получаюисключение вне диапазона от Dictionary
.В настоящее время процесс имеет размер коммита около 8 Гбайт.Сервер, на котором он работает, имеет 24 Гбайт ОЗУ, и его еще много.Операционная система и приложение являются 64-битными.
Я попытался разбить на секунду Dictionary
после 30 миллионов элементов, что работает, так что это не ограничение ОЗУ как таковое.Должно быть ограничение в Dictionary
.
Мне интересно, какое это может быть ограничение.Есть идеи?