Страница: 1 |
Страница: 1 |
Вопрос: память
Добавлено: 26.07.10 02:31
Автор вопроса: UnDeAdZak
Подскаижте, какими способами можно очистить память потребляемую приложением, не закрывая его?
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Arvitaly
ICQ: 301746136
Вопросов: 28
Ответов: 549
Web-сайт:
Профиль | | #1
Добавлено: 26.07.10 06:04
Приложение твое?
Номер ответа: 2
Автор ответа:
Сергей
ICQ: 558230345
Вопросов: 7
Ответов: 91
Профиль | | #2
Добавлено: 26.07.10 08:57
какую часть памяти? Всю? или только область хранения переменных?
Номер ответа: 3
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #3
Добавлено: 26.07.10 13:59
Почитай как рабоатет сборщик мусора в .NET, чтоб разобраться, потому что ответ на твой вопрос не очень простой.
В двух словах, как правило ничего очищать не надо, все очищается само, если приложение правильно написано.
Приложение будет увеличиваться в размере, если у тебя есть утечка памяти в глобальных переменных. Сборщик мусора их не удаляет.
Можно запустить сборщик мусора вручную
Но если сборщик мусора не может удалить определенные объекты когда он запускается автоматически, то принудительный запуск тоже не сможет ничего сделать.
Номер ответа: 4
Автор ответа:
UnDeAdZak
Вопросов: 80
Ответов: 476
Профиль | | #4
Добавлено: 26.07.10 14:59
Artyom Я не понимаю, в чём продлема, но дело вот в чём: Скачал я библиотеку FreeImage.NET, работает всё прикрасно, картинки грузятся, но!!!По какойто причине, команда, используемая для выгрузки картинки из памяти НЕ РАБОТАЕТ!!! Точнее(а я специально проверял) Вот до загрузки картинки приложение в памяти требует 6 мегобайт, после загрузки картинки уже 8 мегобайт, после выгрузки картинки - 7.5 метров!!! и следовательно со следующей картинкой уже 9,5 мегобайт .И я никак не пойму в чём проблема. Скачал с сайта FreeImage примеры ,там всё точно также(в смысле та-же проблема), и я не знаю уже что делать.
Номер ответа: 5
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #5
Добавлено: 26.07.10 15:17
проблема пряморукости кодера библиотеки, очевидно
Номер ответа: 6
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #6
Добавлено: 26.07.10 17:23
На таких небольших объемах нет оснований говорить об утечке.
Запусти в цикле подряд 100 раз загрузку/выгрузку и посмотри, до скольки поднимается объем занимаемой памяти.
Проверь, правильно ли ты освобождаешь ресурсы (Dispose и прочие вещи).
Номер ответа: 7
Автор ответа:
UnDeAdZak
Вопросов: 80
Ответов: 476
Профиль | | #7
Добавлено: 26.07.10 18:15
ArtyomВ таких малых обьёмах??? я проверил все варианты очистки. А обьём у меня доходит да 2-х гигобайт.
Номер ответа: 8
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #8
Добавлено: 27.07.10 01:48
А что тебя смущает? Несколько мегабайт могут вполне "потеряться" через время после запуска - на погрузку сборок, например.
Если объем доходит до 2 гигабайт, то это определенно утечка памяти. Вопрос только в том где она происходит, покажи минимально возможный код на котором утечка памяти воспроизводится, может что-то посоветую.
Номер ответа: 9
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #9
Добавлено: 27.07.10 01:56
*подгрузку