HPC.ru lite - Все форумы
Форум: Программирование для КПК
Тема: Куда уходит память?
[Ответить]
ChVik [23.11.2004 11:51] Куда уходит память?:
Вопрос следующий. Написал прогу которая работает с SQLCE и заметил такую особенность - открываю форму, память под нее резервируется, закрываю форму - память не высвобождается. Думал что я не правильно ее освобождаю, промучался долго но нифига. Попробовал следующий вариант: сделал главную форму и на ней кнопку которая открывает вторую форму, вроде все просто, но результат тот же - память не высвобождается пока не закроешь приложение. Может быть кто-то объяснит в чем дело?
ЗЫ: GC.Collect() тоже не помогает
Или может быть кто-то просто встречался с подобной проблемой, или я один такой?
nidl [20.12.2004 14:56] :
В книжке прочитал что это особенность для КПК т.е. формы до конца работы приложения не выгружаются а просто прячутся 
ChVik [20.12.2004 15:03] :
Странно это как-то. Если бы формы прятались, а при повторном вызове опять использовались - тут вопросов нет, а так если форма занимает у меня 10 кил и я 10 раз ее вызову то память где-то на 100 кил и уменьшится.
((
nidl [21.12.2004 09:49] :
Форма уже загружена в память и при повторном вызове она просто появляется на экране и память никуда не уходит.
ChVik [21.12.2004 10:01] :
Дело в том что как раз уходит. Если вызываешь одну и ту же форму несколько раз, то память постоянно уменьшается.
nidl [21.12.2004 15:02] :
А ты на чем пишешь? Я на на eVB. У меня такой проблемы нет... 
ChVik [21.12.2004 15:05] :
Пока я писал на eVB у меня тоже таких проблем не было 
Только сейчас перешел на C# и началось 
nidl [23.12.2004 14:05] :
Может Microsoft опять чего накосячила... 
Det [24.12.2004 14:35] Re: Куда уходит память?:
ChVik писал(а):
ЗЫ: GC.Collect() тоже не помогает
Или может быть кто-то просто встречался с подобной проблемой, или я один такой?
У тебя может где-то висит враппер, требующий финализации, над неким ресурсом базы данных - типа курсора... Сам объект занимает несколько байт памяти, а держит системных ресурсов на несколько мегабайт, но GC об этом ничего не знает и считает, что удалять его вовсе необязательно. Попробуй вызвать GC.Collect несколько раз, и где только можно явно вызывай Dispose для всех объектов с IDisposable.
Хотя, конечно, это может быть и банальная утчека памяти где-нибудь в бмблиотеке - такое тоже возможно 
XTREME [12.04.2005 15:24] Re: Куда уходит память?:
ChVik писал(а):
Вопрос следующий. Написал прогу которая работает с SQLCE и заметил такую особенность - открываю форму, память под нее резервируется, закрываю форму - память не высвобождается. ?
Может что-нибудь из этого поможет? http://www.codeproject.com/ce/ce_crtdbg.asp
[Ответить]