|
2 / 2 / 0
Регистрация: 12.11.2011
Сообщений: 48
|
|
.NET 3.x Не освобождается память при закрытии дочерней формы25.11.2011, 20:56. Показов 7560. Ответов 10
Метки нет (Все метки)
Суть в следующем: имеется главная форма и дочерняя (ShowDialog()) .
При открытии дочерней формы происходит работа с базой данных и в массив записывается множество изображений. Как следствие - в диспетчере задач наблюдаю, что у приложения использование памяти подскакивает до 100 Mb. При закрытии дочерней формы - использование памяти по прежнему 100 Mb. При повторном открытии память подскакивает до 200 и т.д. Как это исправить? Пробовал перед закрытием формы вызывать очистку массива изображений images.Clear() , но не помогло. Как быть?
0
|
|
| 25.11.2011, 20:56 | |
|
Ответы с готовыми решениями:
10
Не очищается память при связи дочерней формы со статическим классом Ошибка при закрытии дочерней формы Вызвать событие при закрытии дочерней формы |
|
774 / 554 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
|
||||||
| 25.11.2011, 21:38 | ||||||
|
Есть метод Dispose() который освобождает все используемые ресурсы
0
|
||||||
|
2 / 2 / 0
Регистрация: 12.11.2011
Сообщений: 48
|
|
| 25.11.2011, 21:43 [ТС] | |
|
0
|
|
|
774 / 554 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
|
|||||||
| 25.11.2011, 21:51 | |||||||
![]() А если попробовать загружать данные в dataGridView а не в массив , а потом вызывать
0
|
|||||||
|
2 / 2 / 0
Регистрация: 12.11.2011
Сообщений: 48
|
||
| 25.11.2011, 22:07 [ТС] | ||
мой метод возвращает из базы массив Bitmap[]
0
|
||
|
774 / 554 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
|
||||||||
| 25.11.2011, 22:23 | ||||||||
А вообще правильно бы было узнать как освободить память у массива, но я вам тут подсказать не могу
0
|
||||||||
|
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
|
|
| 26.11.2011, 00:18 | |
|
без кода тут ничего нельзя сказать
может ты там на события главной формы вешаешь обработчики дочерней, или массив объявлен как статический либо не там dispose вызываешь, а может просто надо пройтись по массиву и вызвать dispose для каждого изображения
0
|
|
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
|
| 26.11.2011, 00:29 | |
|
Вообще сборщик мусора, даже после вызова Dispose(), не сразу очищает память, там он делает свою работу ,и когда будет время почистит и 100 мб. ) , ну и нужно для каждого Bitmap-а свой Dispose вызывать т.к dataGridView1.Dispose только для грида.
0
|
|
|
2 / 2 / 0
Регистрация: 12.11.2011
Сообщений: 48
|
|
| 26.11.2011, 17:55 [ТС] | |
|
никуда я ничего не вешаю и массив не статический
делаю перед закрытием дочерней формы для каждого изображения в массиве dispose - память таки упала до 60 Mb (при первом запуске основного приложения память на уровне 10-12 метров находится, т.е. было 10, открыл/закрыл дочернюю стало ~60) При повторном открытии дочерней формы - память опять подскакивает до ~100 и при закрытии опускается до ~60 Кроме этого массива в дочерней форме других массивов нет. Не понимаю что может так мног занимать памяти, и как убить этот массив.
0
|
|
|
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
|
|
| 26.11.2011, 19:08 | |
|
Попробуй свернуть/развернуть окно после второй итерации (когда ~60 MB используется) и посмотри на результат, а дальше уже посмотрим.
0
|
|
|
|
|
| 28.11.2011, 09:57 | |
|
desAlex, ну тебе же sau сказал, сборщик мусора запускается не сразу, это процесс спонтанный и непредсказуемый. Наибольшая вероятность запуска сборщика - необходимость в памяти. Загрузи свой комп так, чтоб оперативки свободной не осталось, и посмотри, что потребляет твоя прога.
http://msdn.microsoft.com/ru-r... 59wtx.aspx Добавлено через 1 минуту
0
|
|
| 28.11.2011, 09:57 | |
|
Помогаю со студенческими работами здесь
11
Закрытие форм при закрытии дочерней формы
Заполнение DataGrid при закрытии дочерней формы
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
|
[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
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|