|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.08.2012, 15:51 | #1 |
Пользователь
Регистрация: 05.03.2012
Сообщений: 29
|
Проблема с утечкой памяти
Здравствуйте!
Я в C# начинающий. Есть такой вот код выполняющийся в бесконечном цикле в отдельном потоке: Код:
Пробовал Код:
Подскажите, как правильно очищать память в данном случае. Забыл вот это (объявление и инициализация): Код:
Последний раз редактировалось mr_cipher; 15.08.2012 в 15:52. Причина: добавил инициализацию |
15.08.2012, 17:59 | #2 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
Код:
Изобретатель велосипедов
|
15.08.2012, 18:47 | #3 | |
Пользователь
Регистрация: 05.03.2012
Сообщений: 29
|
Цитата:
Диспосил и mc_pic, и объект возвращаемый GetImage(), и делал массив статичным (фиксированного размера). Но проблему так и не решил. Может кто подскажет- какими средствами можно подглядеть какому объекту сколько памяти выделено (некоторую диаграмму выделения памяти) и моменты выделения. |
|
15.08.2012, 19:29 | #4 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
Ну как бы проверить-то нетрудно: комментируйте поочерёдно все участвующие в цикле объекты и смотрите, есть ли утечка.
И, если не трудно, выложите код GetImage....
Изобретатель велосипедов
Последний раз редактировалось Selestis; 15.08.2012 в 19:33. |
15.08.2012, 21:23 | #5 |
Форумчанин
Регистрация: 15.12.2010
Сообщений: 398
|
попробуй ms_pic не создавать каждый раз новый а используя старый перезатирая.
А так лучше профайлером убедится что течёт. |
20.08.2012, 10:52 | #6 |
Пользователь
Регистрация: 05.03.2012
Сообщений: 29
|
Код:
Что есть "профайлер" и с чем его едят? |
20.08.2012, 12:31 | #7 |
Форумчанин
Регистрация: 15.12.2010
Сообщений: 398
|
Профайлеров не мало... Но могу посоветовать :
memprofiler Вот им триальной 30 дневной версией. А что такое профайлер ты легко найдёшь в тырнете |
27.08.2012, 18:29 | #8 |
Пользователь
Регистрация: 05.03.2012
Сообщений: 29
|
Итак, потратил недельку времени, чтобы разобраться с профайлером. Прикольная штука.
От части мне это помогло, но запутало меня ещё больше. Исследовал влияние каждой строки кода на память. В профайлере, в любой ситуации, я наблюдаю график Total bytes практичеки на постоянном уровне (около 780 тыс. байт) в течение всего времени работы программы (присутствуют лишь небольшие колебания вверх-вниз, среднее значение постоянно). При этом, в Диспетчере задач кушаемая память продолжает неуклонно расти. Кстати, код немного переделал (суть не изменилась, только объявление всех переменных вынес за пределы цикла): Код:
Что течёт то??? Я боюсь, что когда объём съедаемой памяти достигнет 2 Гб программа просто вылетит. |
27.08.2012, 20:35 | #9 |
Форумчанин
Регистрация: 15.12.2010
Сообщений: 398
|
Сделай snapshot перед запуском скриншотера своего, включи и доводя до прироста в 50-100% памяти сделай промежуточных 2-а snapshot-а и последний перед закртием. Затем сохрани, заархивируй и выложы или мне кинь я посмотрю
При условии что ты делаешь все тем профайлером который я тебе кинул. |
28.08.2012, 13:59 | #10 |
Пользователь
Регистрация: 05.03.2012
Сообщений: 29
|
Не туда смотрел.
(ТОлько это не скриншоттер - картинки ловлю с вебки.) Косяк зарыт тут: Код:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с переполнением памяти | maxeebon | Общие вопросы Delphi | 4 | 19.08.2011 22:09 |
Проблема с освобождением памяти | Vyachek2010 | Общие вопросы Delphi | 15 | 08.02.2011 17:05 |
Проблема с утечкой памяти | ExPeL | Win Api | 4 | 21.10.2010 22:13 |
Проблема с виделением памяти! | FreTFuL | Общие вопросы C/C++ | 1 | 07.05.2010 20:23 |
самописный assert: проблема с утечкой памяти) | sashonk | Общие вопросы C/C++ | 2 | 26.04.2010 15:58 |