Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Расход памяти ПОСЛЕ десериализации, значительно превышает ДО 
:(
    Опции темы
vbprogr
Дата 1.7.2011, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 1.7.2011

Репутация: нет
Всего: нет



Добрый день!

Сегодня столкнулся с непонятным)
В общем дела обстоят так: до сериализации BinaryFormatter имеем использование 30 мб памяти (в TaskMan). 

Данные сохраняются на диск (файл весит 9 мб). 

При следующем запуске прога выполняет десериализацию, после этого в памяти она весит 50 мб и стремительно растёт во время работы (что не происходит при работе с "оригинальными" объектам).

Если попробовать выполнить сериализацию через несколько минут такой "работы", получим 70... 80... 120 мб... я не дождался, но гораздо больше, чем исходные 9 мб.

Во время работы создаются много новых объектов, которые заменяют собой старые (т.е. есть List<GameObject> из 9001-го элемента и каждые несколько минут он полностью обновляется новыми объектами). Напрашивается мысль, что сборщик мусора не хочет "очищать объекты", которые появились после  десериализации, а не "естественным" путём.
При этом на эти объекты нет ссылок... наверное... иначе проблема с "разбуханием" в памяти была бы и до сериализации?...

Возможно, Вы уже сталкивались с подобной проблемой.
Что-то похожее обсуждается здесь - http://www.rsdn.ru/forum/dotnet/3115924.flat.aspx

Подскажите, в чем моя ошибка?

--
Заранее спасибо!
PM MAIL   Вверх
jonie
Дата 2.7.2011, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



надо взять memoryprofiler какой-нибудь. То что показывает TaskMan это лажа, вы даже не указали какую именно память он кушает. Кроме того, надо посмотреть счетчики производительности .net - что в них?


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
vbprogr
Дата 2.7.2011, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 1.7.2011

Репутация: нет
Всего: нет



Частично решил проблему - нужно было очищать таблицы респавна объектов перед сериализацией)... 

Т.е. разбухания в памяти во время работы больше нет, но, все-таки, любой тяжелый объект после десериализации занимает (по показаниям TaskMan'a) больше памяти, чем до неё. После оптимизации (исправил свою ошибку с респавном): до - 50-60 мб, после - 90 мб.

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

Почему такое не происходит при десериализации?
Можно ли вручную запустить такую "упаковку"?

Цитата

вы даже не указали какую именно память он кушает

Столбец "Память - использование", т.е. физическая память. 

Цитата

счетчики производительности .net 

В основном больше всего % дает CLR (операции с коллекциями).
Это если во время работы проги, а если при запуске - там идет десериализация несколько секунд.

Цитата

надо взять memoryprofiler какой-нибудь

Попробую SciTech .NET Memory Profiler, посмотрим, что он пишет...

PM MAIL   Вверх
vbprogr
Дата 2.7.2011, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 1.7.2011

Репутация: нет
Всего: нет



М-да... поставил профайлер, но он не заработал без Debugging Tools, за то глюки с памятью непонятным образом исчезли)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0615 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.