|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Борьба с утечками ресурсов. |
|
.NET - Борьба с утечками ресурсов.
|
Пользователь Сообщения: 55 |
Заметил такую проблему в своей программе:
Программа осуществляет проверку файла на наличие необходимой записи каждые 2 минуты. Так вот, если проверок слишком много, то программа начинает разрастаться в оперативке (при ожидании около суток до 2 Гб). Где искать слабое место и как с этим бороться? |
|
Отправлено: 07:39, 04-10-2010 |
В Поисках Истины Сообщения: 802
|
Профиль | Отправить PM | Цитировать Возможно где нибудь ты забываешь закрыть какое нить соединение?!?!!?Где то просто наверное ресурсы не освобождаются, и поэтому происходит такое!!!Без кода вряд ли что то понять можно
![]() |
------- Отправлено: 08:00, 04-10-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 55
|
Профиль | Отправить PM | Цитировать Код:
|
Отправлено: 08:05, 04-10-2010 | #3 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать 1. Рекурсивно вызывается форма FormMsg frm, но далее она нигде не обнуляется.
2. Есть System.Diagnostics.Process.Start, но нигде нет прерывания работы. 3. searcher также не удаляется, каждый раз создается новый. В общем, ни одна переменная или процесс не заканчивают свою работу. |
------- Отправлено: 09:22, 04-10-2010 | #4 |
Пользователь Сообщения: 55
|
Профиль | Отправить PM | Цитировать Цитата Delirium:
Цитата Delirium:
Цитата Delirium:
И еще вопрос - листбокс надо обнулять, или там все замещается? |
||||
Отправлено: 09:36, 04-10-2010 | #5 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Цитата Efsey:
Цитата Efsey:
Цитата Efsey:
Согласно коду, даже если есть какое то исключение, программа все равно работает. Это в корне неверно. Надо отлавливать такие исключения и обрабатывать их, а не игнонировать. |
|||
------- Отправлено: 09:44, 04-10-2010 | #6 |
Пользователь Сообщения: 55
|
Профиль | Отправить PM | Цитировать frm = null; fin.close(); listBox1.Items.Clear(); всё сделал, а прога все равно растет в оперативе, уже меньше, но все равно растет.
Где еще могут быть проблемы? |
Отправлено: 11:02, 04-10-2010 | #7 |
Пользователь Сообщения: 55
|
Профиль | Отправить PM | Цитировать Правильно ли будет занулять форму подобным образом?
public void rekursia() { FormMsg frm = new FormMsg("Заголовок", "Сообщение", 30, ElapsedTimeButton.btnCancel); if (frm.ShowDialog(this) == System.Windows.Forms.DialogResult.OK) { frm = null; //MessageBox.Show("Вы отказались запустить автоматический вариант о_0", "Ну и зачем?"); } else { frm = null; this.chitalka(); //если таймер не прервали, то запускается чтение логов, а при супер везении, то и запись дисков } } |
Отправлено: 15:01, 04-10-2010 | #8 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Можно и так. Но обнуление формы - это мелочь. Главная проблема в том, что при возникновения исключений вы не пытаетесь их обработать, а просто вжесткую еще раз запускаете процедуры. Плюс процедуры рекурсивные, но сбор мусора(Garbage Collection) нигде не происходит после отработки функций. И я бы рекомендовал не "усыплять" прогу, а сделать ее службой и пересмотреть алгоритм работы. Гораздо надежней не "ждать" 8 часов, а просто активироваться/запускаться в определенное время.
|
------- Отправлено: 01:04, 06-10-2010 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Вопрос - [решено] Борьба с баннерами | kapitanvagin | Защита компьютерных систем | 30 | 14-02-2011 07:26 | |
Установка ПО и борьба с reboot | borison | Microsoft Windows NT/2000/2003 | 3 | 14-01-2007 11:42 | |
Борьба с рекламными банерами и т.п. | nikopol | Сетевые технологии | 2 | 23-09-2005 10:00 | |
Борьба со спамом. КАК? | Rom K | Хочу все знать | 2 | 10-12-2002 07:57 |
|