Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
1 / 1 / 1
Регистрация: 23.08.2011
Сообщений: 33

Увеличение объемов занимаемой памяти и "сборка мусора"

18.05.2015, 10:36. Показов 1605. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Каждый раз после открытия и закрытия формы занимаемая память в "управляемой куче" увеличивается на 2 мб и размер может доходить до 200 мб программа начинает дико лагать.
Проверяю на formclosing формы
C#
1
2
3
4
5
6
7
8
9
10
            
            long totalMemory = GC.GetTotalMemory(true);
            MessageBox.Show("До сборки - " + totalMemory.ToString() + " байт");
            MessageBox.Show(GC.GetGeneration(this).ToString());
            this.Dispose(true);
            GC.SuppressFinalize(this);
            GC.WaitForPendingFinalizers();
            GC.Collect(GC.MaxGeneration);
            totalMemory = GC.GetTotalMemory(true);
            MessageBox.Show("После сборки - " + totalMemory.ToString() + " байт");
На FormLoad читаются данные из базы с нескольких таблиц не большего объема используя для чтения SqlCommand и SqlDataReader и ListView,Label,Textbox для отображения.

Экзэмпляр этой формы создается на DblClick ListView предыдущей формы.
Номер поколения формы - 2.
После закрытия память в управляемой куче не отчищается постоянный рост занимаемой памяти при открытии данной формы показывает и диспетчер задач.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.05.2015, 10:36
Ответы с готовыми решениями:

Постепенное увеличение занимаемой оперативной памяти и сбой программы
Программа содержит 4 формы, которые создаются при первом запуске приложения, и работает с текстовыми (AnsiString) и числовыми (int и...

Clojure Как работает классическая сборка мусора в лиспе? Сколько памяти занимает cons-ячейка?
Как работает классическая сборка мусора в лиспе (прочитал в документации, что SBCL использует классическую сборку)? Как работает в данном...

HttpWebRequest, расход памяти непомерно больших объемов и , как следствие, утечка памяти
Добрый вечер. Мне была поставлена такая задача. Написать приложение, которая загружает из списка ссылки с сайта и ищет там определенную...

5
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
18.05.2015, 10:42
PornoCowboy, значит где-то что-то висит, очевидно же.

И да, управлять памятью нельзя. То, что МС предоставляет для этого АПИ - на самом деле не для этого, а совсем для других целей.

Проверьте, что везде всё диспозится, что нет глобальных списков, которые растут безостановочно, и т.п.
Для таких вещей существует профайлер. Отладочная печать это прекрасно, но существуют прекрасные инструменты, встроенные в студию или сторонние.
1
1 / 1 / 1
Регистрация: 23.08.2011
Сообщений: 33
18.05.2015, 10:47  [ТС]
Psilon, То есть после реализации всех объектов я должен прописать this.dispose(true) либо имя_объекта.Dispose(true)
и все static public переменные и объекты и методы неизбежно будут копиться в памяти или
Цитата Сообщение от Psilon Посмотреть сообщение
нет глобальных списков
только List<>?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
18.05.2015, 11:07
Лучший ответ Сообщение было отмечено PornoCowboy как решение

Решение

PornoCowboy, то есть диспозить всё, что реализует IDisposable. Если у вас нет объектов, которые хранят IDisposable, а только их используют (например, у вас есть подключение, которое вы используете в методе, но нет подключения - поля класса), то достаточно везде обернуть в using все места использования IDisposable.
Цитата Сообщение от PornoCowboy Посмотреть сообщение
только List<>?
всех коллекций, конечно, не только List<T>
1
1 / 1 / 1
Регистрация: 23.08.2011
Сообщений: 33
18.05.2015, 13:11  [ТС]
Psilon, Спасибо огромное наконец то разглядел очертания алгоритма сборщика мусора . Сейчас понесется рефакторинг.
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
18.05.2015, 13:13
PornoCowboy, ну отлично, лучше поздно, чем никогда Хотя пока еще не поздно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.05.2015, 13:13
Помогаю со студенческими работами здесь

Отображение занимаемой памяти
Здравствуйте. Как на C# отобразить количество занимаемой программой памяти ОЗУ? (Вы вести сколько ОЗУ занимает программа)

Высвобождение памяти занимаемой деревом.
Есть код построения и поиска максимального значения элемента дерева, как удалить дерево для высвобождения памяти ? Program Lab_6; uses...

Размер занимаемой памяти приложением?
Вопрос по теме

Структуры. Оптимизация занимаемой памяти
Всем привет. Пытаюсь разобраться с объявлением структур без &quot;мусорных&quot; байтов, но почему-то тип 4-х байтный int всегда занимает одно...

Сборка мусора
Нужна ли в Си ++ «сборка мусора»? Почему возникает такая проблема и как она решается в Си++?


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru