Список объектов занимает слишком много памяти в ОЗУ

#c# #file #object #memory

#c# #файл #объект #память

Вопрос:

У меня есть текстовый файл с данными Json, его размер составляет 140 Мб. Я читаю строку списка и десериализую ее с помощью Web.Script.При сериализации результирующий объект приобретает размер 450 МБ в оперативной памяти. И я не знаю, как это занимает слишком много памяти? (исходный текстовый файл имеет размер всего 140 Мб)

Кто-нибудь сталкивался с этой проблемой и дал мне какое-нибудь объяснение?

Спасибо за вашу помощь.

Комментарии:

1. Честно говоря, я бы ожидал даже больше, чем 450 МБ, если честно…

2. Во-первых, вы не должны использовать Web.Script.Serialization , он существует только из-за устаревшей поддержки, есть десятки лучших вариантов. Во-вторых, как вы можете прочитать файл в списке строк? Это несколько документов JSON в одном файле? Я действительно не уверен, зачем вы вообще считываете это в память.

3. Спасибо @DavidG за ваш комментарий. Мне нужно выполнить поиск в большом списке файлов, я обнаружил, что чтение всех файлов в память займет меньше времени для поиска. Вот почему я читаю все в object.

4. Вы правы, файл содержит Json и некоторую другую информацию. Итак, решение в том, что я попытаюсь использовать другой синтаксический анализ JSON, приведет ли мой объект к уменьшению размера?

5. @user2366842 пожалуйста, не могли бы вы объяснить мне, почему он увеличивает размер, когда я читаю в object @_@! Я новичок. пожалуйста.

Ответ №1:

Спасибо всем за вашу помощь,

Я выполняю поиск строки в большом списке файлов, я обнаружил, что чтение всех файлов в память займет меньше времени для поиска.

Но проблема в том, что строка списка занимает слишком много памяти в ОЗУ.

Это мой вывод:

  1. Используйте Json.Net вместо Web.Script.Сериализация, Json.net будет намного быстрее для сериализации и десериализации.

  2. Сжимайте строку при чтении файла в память, а затем распаковывайте ее для использования.(Поиск будет медленнее, но не слишком сильно)

https://dotnet-snippets.de/snippet/strings-komprimieren-und-dekomprimieren/1058