Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: память Добавлено: 26.07.10 02:31  

Автор вопроса:  UnDeAdZak
Подскаижте, какими способами можно очистить память потребляемую приложением, не закрывая его?

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #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, чтоб разобраться, потому что ответ на твой вопрос не очень простой.

В двух словах, как правило ничего очищать не надо, все очищается само, если приложение правильно написано.
Приложение будет увеличиваться в размере, если у тебя есть утечка памяти в глобальных переменных. Сборщик мусора их не удаляет.

Можно запустить сборщик мусора вручную
  1. GC.Collect()

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

Ответить

Номер ответа: 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
*подгрузку

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам