Куда уходит память?

Средства разработки, технические вопросы, отвечает (по мере сил) Отдел Разработок
Закрыто
ChVik
Новенький (0 lvl)
Сообщения: 4
Зарегистрирован: Вт ноя 23, 2004 11:49

Куда уходит память?

Сообщение ChVik » Вт ноя 23, 2004 11:51

Вопрос следующий. Написал прогу которая работает с SQLCE и заметил такую особенность - открываю форму, память под нее резервируется, закрываю форму - память не высвобождается. Думал что я не правильно ее освобождаю, промучался долго но нифига. Попробовал следующий вариант: сделал главную форму и на ней кнопку которая открывает вторую форму, вроде все просто, но результат тот же - память не высвобождается пока не закроешь приложение. Может быть кто-то объяснит в чем дело?
ЗЫ: GC.Collect() тоже не помогает
Или может быть кто-то просто встречался с подобной проблемой, или я один такой?
Война - войной, а обед по рассписанию!

nidl
Студент (1 lvl)
Сообщения: 26
Зарегистрирован: Сб июл 17, 2004 17:25

Сообщение nidl » Пн дек 20, 2004 14:56

В книжке прочитал что это особенность для КПК т.е. формы до конца работы приложения не выгружаются а просто прячутся :(

ChVik
Новенький (0 lvl)
Сообщения: 4
Зарегистрирован: Вт ноя 23, 2004 11:49

Сообщение ChVik » Пн дек 20, 2004 15:03

Странно это как-то. Если бы формы прятались, а при повторном вызове опять использовались - тут вопросов нет, а так если форма занимает у меня 10 кил и я 10 раз ее вызову то память где-то на 100 кил и уменьшится. :(((
Война - войной, а обед по рассписанию!

nidl
Студент (1 lvl)
Сообщения: 26
Зарегистрирован: Сб июл 17, 2004 17:25

Сообщение nidl » Вт дек 21, 2004 09:49

Форма уже загружена в память и при повторном вызове она просто появляется на экране и память никуда не уходит.

ChVik
Новенький (0 lvl)
Сообщения: 4
Зарегистрирован: Вт ноя 23, 2004 11:49

Сообщение ChVik » Вт дек 21, 2004 10:01

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

nidl
Студент (1 lvl)
Сообщения: 26
Зарегистрирован: Сб июл 17, 2004 17:25

Сообщение nidl » Вт дек 21, 2004 15:02

А ты на чем пишешь? Я на на eVB. У меня такой проблемы нет... :wink:

ChVik
Новенький (0 lvl)
Сообщения: 4
Зарегистрирован: Вт ноя 23, 2004 11:49

Сообщение ChVik » Вт дек 21, 2004 15:05

Пока я писал на eVB у меня тоже таких проблем не было ;)
Только сейчас перешел на C# и началось :(
Война - войной, а обед по рассписанию!

nidl
Студент (1 lvl)
Сообщения: 26
Зарегистрирован: Сб июл 17, 2004 17:25

Сообщение nidl » Чт дек 23, 2004 14:05

Может Microsoft опять чего накосячила... :?

Det
Студент (1 lvl)
Сообщения: 46
Зарегистрирован: Пт дек 24, 2004 14:00

Re: Куда уходит память?

Сообщение Det » Пт дек 24, 2004 14:35

ChVik писал(а):ЗЫ: GC.Collect() тоже не помогает
Или может быть кто-то просто встречался с подобной проблемой, или я один такой?
У тебя может где-то висит враппер, требующий финализации, над неким ресурсом базы данных - типа курсора... Сам объект занимает несколько байт памяти, а держит системных ресурсов на несколько мегабайт, но GC об этом ничего не знает и считает, что удалять его вовсе необязательно. Попробуй вызвать GC.Collect несколько раз, и где только можно явно вызывай Dispose для всех объектов с IDisposable.
Хотя, конечно, это может быть и банальная утчека памяти где-нибудь в бмблиотеке - такое тоже возможно :)

Аватара пользователя
XTREME
Новенький (0 lvl)
Сообщения: 3
Зарегистрирован: Вт апр 12, 2005 15:22

Re: Куда уходит память?

Сообщение XTREME » Вт апр 12, 2005 15:24

ChVik писал(а):Вопрос следующий. Написал прогу которая работает с SQLCE и заметил такую особенность - открываю форму, память под нее резервируется, закрываю форму - память не высвобождается. ?
Может что-нибудь из этого поможет? http://www.codeproject.com/ce/ce_crtdbg.asp

Закрыто

Вернуться в «Программирование для КПК»