Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
29 / 15 / 10
Регистрация: 07.06.2018
Сообщений: 110
.NET 4.x

Утечка ли памяти?

03.07.2018, 13:51. Показов 1092. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я разрабатываю программу на С# в среде MSVS 2015.
Заметил такую интересную вещь. Запускаю программу а затем сворачиваю ее в панель задач и делаю снимок памяти в окне средства диагностики, потом опять разворачиваю ее, а затем сворачиваю ее опять в панель задач, ничего в ней не делая, и делаю опять снимок памяти. Параллельных моих потоков в это время не работает. Правда, не исключаю, что Microcoft запускает свои потоки, и их работа дает описанный ниже эффект.
В результате моих операций число созданных объектов увеличивается от 2 до 5 (общий объем кучи правда возрастает минимально, менее 0.4 КБ) Правда бывают единичные случаи, когда количество объектов уменьшается на 2, но по моим наблюдениям, это не компенсирует память.
Теоретически, как я полагаю, в результате моих действий, число объектов не должно меняться.

Вопрос такой: Является это утечка памяти или нет? Если да, то как ее локализовать и как с ней бороться? Если же нет,можно ли данное средства использовать для диагностики утечек памяти в своей программе и насколько оно надежно и эффективно для этих целей.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.07.2018, 13:51
Ответы с готовыми решениями:

утечка памяти
Доброго времени суток, магистры и гуру программирования. Помогите решить вопрос. Задавал другие по этой теме, но разобравшись понял, что...

Утечка памяти
Кто подскажет плиз. Тут у меня утечка памяти foreach (var file in xpsFiles) { ...

Утечка памяти из Graphics
День добрый, возникла такая проблема. Есть две формы, на одной из них PictureBox, в котором все время обновляется изображение, старое...

4
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
03.07.2018, 14:22
Цитата Сообщение от Melamed Посмотреть сообщение
Является это утечка памяти или нет?
Растет ли память безразмерно вследствие этих манипуляций и приводит ли в какой-то момент к падению приложения из-за нехватки памяти?
Если да, то утечка.

Цитата Сообщение от Melamed Посмотреть сообщение
Если да, то как ее локализовать и как с ней бороться?
Смотрите какие объекты и где были созданы.
При утечке обычно создаются одни и те же объекты в одном и том же месте.

Цитата Сообщение от Melamed Посмотреть сообщение
можно ли данное средства использовать для диагностики утечек памяти в своей программе
Под данными средствами подразумеваются встроенные средства диагностики в Студии?
Можно, но функционал там довольно базовый.
0
29 / 15 / 10
Регистрация: 07.06.2018
Сообщений: 110
03.07.2018, 15:17  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Растет ли память безразмерно вследствие этих манипуляций и приводит ли в какой-то момент к падению приложения из-за нехватки памяти?
Если да, то утечка.
Беда в том, что для ответа на данный вопрос, необходимо описанные выше действия повторить очень много раз. (по моим прикидкам несколько миллионов) На это у меня нет соответственно времени. Можно ли на данный вопрос найти побыстрее ответ или нет? Или как-то автоматизировать процесс, чтобы выяснит это.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
03.07.2018, 15:27
Цитата Сообщение от Melamed Посмотреть сообщение
Можно ли на данный вопрос найти побыстрее ответ или нет?
Можно, если вы сможете изолировать создаваемые объекты и место их создания в коде и по анализу этого кода прийти к выводу, что тут происходит утечка.

Цитата Сообщение от Melamed Посмотреть сообщение
Или как-то автоматизировать процесс, чтобы выяснит это.
Приложение можно сворачивать и разворачивать программно по таймеру.
Разумеется, если выделить код, который выполняется при сворачивании и разворачивании, то можно просто в цикле вызывать этот код.
0
Эксперт .NET
 Аватар для Usaga
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,404
03.07.2018, 15:51
Melamed, WinForms имеет право создавать свои какие-то объекты и выделять память во время обработки событий.

Если ваш код никакой ничего не создаёт, то это дело рук WinForms. Утечкой не является, ибо было бы обнаружено ещё пятнадцать лет назад (не вы же первый додумались окошко посворачивать).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.07.2018, 15:51
Помогаю со студенческими работами здесь

Утечка памяти при работе с PictureBox!
Здравствуйте, у меня такой вопрос, я создал программу для просмотра изображений, т.е. есть listbox со списком файлов, при выборе...

Утечка памяти при отрисовке изображения в picturebox
Попробовал сделать отрисовку части изображения в picturebox с возможностью перетаскивания, на MouseMove поставил этот метод, работает...

Утечка памяти при работе с файлами TIFF
Здравствуйте! Помогите найти утечку памяти, читал msdn, но так и не понял как это сделать вот и обработчик с методами private void...

Утечка памяти
protected System.Collections.ArrayList ObjList; Объект добавляется в список следующим образом: .... ...

Утечка памяти
Здравствуйте. В моей программе происходит утечка памяти. Ставлю наверное экстрасенсорную задачу. Подскажите как найти проблемное место в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru