Re: Освободить память после закрытия формы
От: kotov_a  
Дата: 05.08.11 09:35
Оценка: 1 (1) :)
Здравствуйте, MaSonia, Вы писали:

MS>Всем привет. Ситуация такова.

MS>Есть форма с элементом DataGridView, которая отображает данные из бд (хранятся в param). После просмотра таблицы юзер нажимает кнопку, данная форма закрывается, и открывается другая.
MS>Код примерно такой:
MS>public partial class Form1: Form
MS>{
MS> ...
MS> private void buttonClick(object sender, EventArgs e)
MS> {
MS> this.Hide();
MS> Form2 fr = new Form2(param);
MS> param = null;
MS> fr.ShowDialog();
MS> this.Dispose(true);
MS> }
MS> ...
MS>}

MS>Но, как известно, Dispose не освобождает память. Это делает GC, но неизвестно когда.

MS>Вопрос — есть ли способ сразу освободить память после убийства формы или надеется на GC, что он проснется, когда свободная память будет подходить к концу?

MS>Что-то мне подсказывает, что вы укажите на 2 вариант, да и закидаете помидорами за передачу данных из бд между формами...



Писать так:
using(Form2 fr = new Form2(param))
{
fr.ShowDialog();
}
И не заморачиваться. CLR лучше, чем вам известно, когда освободить память.
Освободить память после закрытия формы
От: MaSonia  
Дата: 05.08.11 09:29
Оценка:
Всем привет. Ситуация такова.
Есть форма с элементом DataGridView, которая отображает данные из бд (хранятся в param). После просмотра таблицы юзер нажимает кнопку, данная форма закрывается, и открывается другая.
Код примерно такой:
public partial class Form1: Form
{
...
private void buttonClick(object sender, EventArgs e)
{
this.Hide();
Form2 fr = new Form2(param);
param = null;
fr.ShowDialog();
this.Dispose(true);
}
...
}

Но, как известно, Dispose не освобождает память. Это делает GC, но неизвестно когда.
Вопрос — есть ли способ сразу освободить память после убийства формы или надеется на GC, что он проснется, когда свободная память будет подходить к концу?

Что-то мне подсказывает, что вы укажите на 2 вариант, да и закидаете помидорами за передачу данных из бд между формами...
Re[2]: Освободить память после закрытия формы
От: MaSonia  
Дата: 05.08.11 10:00
Оценка:
Здравствуйте, kotov_a, Вы писали:

_>Писать так:

_>using(Form2 fr = new Form2(param))
_>{
_> fr.ShowDialog();
_>}
_>И не заморачиваться. CLR лучше, чем вам известно, когда освободить память.

Спасибо за ответ, kotov_a.
Попробовала, все равно жрет и не освобождает. Комп не тормозит, но тот факт, что размер потребляемой памяти все время растет, как-то пугает.
Re[3]: Освободить память после закрытия формы
От: Brn Россия  
Дата: 05.08.11 11:31
Оценка:
Здравствуйте, MaSonia, Вы писали:

MS>Здравствуйте, kotov_a, Вы писали:


_>>Писать так:

_>>using(Form2 fr = new Form2(param))
_>>{
_>> fr.ShowDialog();
_>>}
_>>И не заморачиваться. CLR лучше, чем вам известно, когда освободить память.

MS>Спасибо за ответ, kotov_a.

MS>Попробовала, все равно жрет и не освобождает. Комп не тормозит, но тот факт, что размер потребляемой памяти все время растет, как-то пугает.

Сверните и разверните форму. Размер потребляемой памяти придёт в норму. Не стоит пугаться.
Re[4]: Освободить память после закрытия формы
От: MaSonia  
Дата: 05.08.11 11:47
Оценка:
Здравствуйте, Brn, Вы писали:

Brn>Сверните и разверните форму. Размер потребляемой памяти придёт в норму. Не стоит пугаться.



Ок, спасибо.
Re: Освободить память после закрытия формы
От: baranovda Российская Империя  
Дата: 05.08.11 11:53
Оценка:
Здравствуйте, MaSonia, Вы писали:

MS>Но, как известно, Dispose не освобождает память. Это делает GC, но неизвестно когда.

MS>Вопрос — есть ли способ сразу освободить память после убийства формы или надеется на GC, что он проснется, когда свободная память будет подходить к концу?
MS>Что-то мне подсказывает, что вы укажите на 2 вариант, да и закидаете помидорами за передачу данных из бд между формами...

Висящая форма при работе с данными — верный симптом того, что где-то произошла подписка на события переданного извне источника данных, а отписаться забыли. Databinding, например.
Re: Освободить память после закрытия формы
От: AlexNek  
Дата: 05.08.11 16:49
Оценка:
Здравствуйте, MaSonia, Вы писали:

MS>Всем привет. Ситуация такова.

MS>Есть форма с элементом DataGridView, которая отображает данные из бд (хранятся в param). После просмотра таблицы юзер нажимает кнопку, данная форма закрывается, и открывается другая.
Весьма странное поведение, а если новая форма тут же закрывается, что происходит?
Cообщение написано в ... << RSDN@Home 1.2.0 alpha 5-AN-R5 rev. 7279>>
Re[2]: Освободить память после закрытия формы
От: MaSonia  
Дата: 08.08.11 04:09
Оценка:
Здравствуйте, baranovda, Вы писали:

B>Висящая форма при работе с данными — верный симптом того, что где-то произошла подписка на события переданного извне источника данных, а отписаться забыли. Databinding, например.


Данные из бд берутся с помощью запросов, соединение после запроса везде закрывается.
Re[2]: Освободить память после закрытия формы
От: MaSonia  
Дата: 08.08.11 04:49
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Здравствуйте, MaSonia, Вы писали:


MS>>Всем привет. Ситуация такова.

MS>>Есть форма с элементом DataGridView, которая отображает данные из бд (хранятся в param). После просмотра таблицы юзер нажимает кнопку, данная форма закрывается, и открывается другая.
AN>Весьма странное поведение, а если новая форма тут же закрывается, что происходит?

Ничего не происходит, то есть так же по чуть-чуть увеличивается количество пожираемой памяти.
Вот при сворачивании-разворачивании окна память сбрасывается.
Re[3]: Освободить память после закрытия формы
От: AlexNek  
Дата: 08.08.11 15:55
Оценка:
Здравствуйте, MaSonia, Вы писали:

MS>Здравствуйте, AlexNek, Вы писали:


AN>>Здравствуйте, MaSonia, Вы писали:


MS>>>Всем привет. Ситуация такова.

MS>>>Есть форма с элементом DataGridView, которая отображает данные из бд (хранятся в param). После просмотра таблицы юзер нажимает кнопку, данная форма закрывается, и открывается другая.
AN>>Весьма странное поведение, а если новая форма тут же закрывается, что происходит?

MS>Ничего не происходит, то есть так же по чуть-чуть увеличивается количество пожираемой памяти.

Вообще то я имел в виду не память, а пользователя. Я просто не представляю как можно будет пользоватся подобной программой.
MS>Вот при сворачивании-разворачивании окна память сбрасывается.
А почему вообще возник вопрос о потерях памяти вроде для НЕТа это не стоит так остро.
Cообщение написано в ... << RSDN@Home 1.2.0 alpha 5-AN-R5 rev. 7279>>
Re[4]: Освободить память после закрытия формы
От: MaSonia  
Дата: 09.08.11 05:39
Оценка:
Здравствуйте, AlexNek, Вы писали:

MS>>Ничего не происходит, то есть так же по чуть-чуть увеличивается количество пожираемой памяти.

AN>Вообще то я имел в виду не память, а пользователя. Я просто не представляю как можно будет пользоватся подобной программой.

А можно по-конкретнее что вы имеете в виду?


MS>>Вот при сворачивании-разворачивании окна память сбрасывается.

AN>А почему вообще возник вопрос о потерях памяти вроде для НЕТа это не стоит так остро.

Просто увидела в диспетчере задач, что программа грузит достаточно много памяти и решила узнать как это исправить.
Re[5]: Освободить память после закрытия формы
От: AlexNek  
Дата: 09.08.11 16:11
Оценка:
Здравствуйте, MaSonia, Вы писали:

MS>Здравствуйте, AlexNek, Вы писали:


MS>>>Ничего не происходит, то есть так же по чуть-чуть увеличивается количество пожираемой памяти.

AN>>Вообще то я имел в виду не память, а пользователя. Я просто не представляю как можно будет пользоватся подобной программой.

MS>А можно по-конкретнее что вы имеете в виду?

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

MS>>>Вот при сворачивании-разворачивании окна память сбрасывается.

AN>>А почему вообще возник вопрос о потерях памяти вроде для НЕТа это не стоит так остро.

MS>Просто увидела в диспетчере задач, что программа грузит достаточно много памяти и решила узнать как это исправить.

Много это сколько?
Вот была в проге ошибка, после загрузки брала около 300 Кб, а после полдня работы было 1.5 гига. Это уже проблема. Не создавайте проблему там где ее нет. Другое дело, если после каждой загрузки "форма выжирает" по 100 кб допустим. Но проблема будет наверняка в загрузке данных, а не в форме как таковой.
Cообщение написано в ... << RSDN@Home 1.2.0 alpha 5-AN-R5 rev. 7279>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.