Краткий обзор моей ситуации: Я получаю текстовые файлы по расписанию, которые разбиваются на количество символов, я разрабатываю приложение, которое разбивает каждую строку на список моделей в зависимости от которые обрабатывают его анализ. НАПРИМЕР. Текстовый файл «Лица» длиной 300 строк создаст список пользовательской модели «Человек». каждый элемент в списке - это строка в файле. Это делается через:Слишком много объектов, вызывающих из памяти исключение
private static List<Person> InitializePeople(DataManager dm, string filePath)
{
List<Person> people= new List<Person>();
//Get lines from file to loop through
foreach (var line in dm.GetDataLinesFromFile(filePath).ToList())
{
Person person = new Person();
//This splits out the character counted split line
//into the models format and adds it to a list
people.Add((Person)dm.GetFormattedData(person, new FormatManger(), line));
}
return people;
}
Это работает нормально, пока я не получу файл длиной в миллионы строк. Как вы можете видеть, я совершаю нахальный NONO в цикле, в котором я создаю новый объект каждый раз, когда он петли. Это я верю в то, где моя проблема, она начинает бороться за память, когда создаются экземпляры объектов. Что это лучший способ сделать это? Какой-то другой способ, который более эффективен в работе с памятью? Любая помощь приветствуется.
Да; не пытайтесь создать миллионы объектов. Вероятно, вы должны использовать базу данных. – SLaks
Вам нужны все они в памяти одновременно? Если нет, используйте 'IEnumerable File.ReadLines()' и 'yield return', опустите' ToList() '. –
CodeCaster
Проблема заключается не в создании объекта внутри цикла, а в списке, который вы поддерживаете, который будет расти в зависимости от размера. Кстати, что вы делаете со списком? – XtremeBytes