TStringList объектов, занимающих тонны памяти в Delphi XE

Я работаю над программой моделирования.

Одно из первых действий программы читается в огромном файле (28 МБ, около 79 000 строк), анализирует каждую строку (около 150 полей), создает класс для объекта и добавляет его в TStringList.

Он также читает в другом файле , который добавляет больше объектов во время выполнения. В итоге получается около 85 000 объектов.

Я работал с Delphi 2007, и программа использовала много памяти, но работала нормально. Я обновился до Delphi XE и перенес программу, и теперь она использует НАМНОГО больше памяти, и в конечном итоге у нее заканчивается память на полпути.

Таким образом, в Delphi 2007 он будет использовать 1,4 гигабайта после чтение в исходном файле, что, очевидно, очень много, но в XE оно заканчивается использованием почти 1,8 гигабайт, что действительно огромно и приводит к остановке и получению ошибки

Итак, мой вопрос

  1. Почему он использует столько памяти?
  2. Почему в XE используется намного больше памяти, чем в 2007?
  3. Что я могу с этим поделать? Я не могу изменить размер или длину файла, и мне нужно создать объект для каждой строки и где-нибудь его сохранить

Спасибо

6
задан ain 25 August 2011 в 16:21
поделиться