#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:
Спасибо всем за вашу помощь,
Я выполняю поиск строки в большом списке файлов, я обнаружил, что чтение всех файлов в память займет меньше времени для поиска.
Но проблема в том, что строка списка занимает слишком много памяти в ОЗУ.
Это мой вывод:
-
Используйте Json.Net вместо Web.Script.Сериализация, Json.net будет намного быстрее для сериализации и десериализации.
-
Сжимайте строку при чтении файла в память, а затем распаковывайте ее для использования.(Поиск будет медленнее, но не слишком сильно)
https://dotnet-snippets.de/snippet/strings-komprimieren-und-dekomprimieren/1058