Я искал повсюду и не смог найти решение своей проблемы.
У меня типичная ситуация, когда процесс постепенно пожирает память. Процесс в конечном итоге выдает исключение OutofMemory. В прошлом эта проблема решалась путем создания специальной машины с большей памятью.
Этот процесс взрывает только одного из наших клиентов, у которого около 450 000 записей. Мы перебираем коллекцию учетных записей и создаем объект класса, который затем передается в сериализатор xml. Этот объект имеет несколько свойств и методов, которые не все будут заполнены одновременно. Эти объекты заполняются на основе информации в каждой записи учетной записи.
Я проверил, как мы вызываем конструктор для XML-сериализатора, и он находится в формате, который будет хранить сборку xml и не создавать новые каждый раз. Поэтому я не верю, что из-за создания динамических сборок происходит утечка памяти.
Как мы называем сериализатор: Dim k1Serializer As New XmlSerializer (GetType (ClassObject)) *
Мои вопросы:
При сериализации большого объекта смотрит ли сериализатор на все возможные сериализуемые объекты или только те, которые заполнены вашим объектом?
Может ли проблема с сериализацией этого большого объекта класса вызвать проблему?
Я заметил, что когда мы передаем сериализованный объект, он не записывается автоматически в указанный файл. Я полагаю, что сериализация объекта занимает несколько секунд, а затем записывает его. Может ли тот факт, что мы перебираем так много записей, так быстро, что сериализатору не хватает времени записать в файл и затем освободить память?
Я действительно в своем уме, и любая помощь будет оценена. Пожалуйста, дайте мне знать, если требуется какая-либо другая информация.
Спасибо