| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Память под string |
| Автор: hug 22.5.2008, 08:52 |
| Добрый день Проблема такова: Программа работает с длинными строками. Качает html переводит в строки(stream to string)-> парсит регулярками. Замечена на предмет утечки памяти.(за сутки сьедается 2 гига, но программа в таск менеджере постоянно ест не более 100мб) С помощью профайлера было определено, что наиболее большие затраты памяти как раз на string. Прочитал, что память для string выделяется в куче gc.collect вызывается Вопрос:Может ли проблема быть связана со string Если да, то как ее решить? Чистить строки но как? |
| Автор: mihryak 22.5.2008, 10:07 |
| скорее всего утечка вызвана незакрытыми стримами или WebResponse'ами вызывай в конце использования в блоке finally Close() или заверни использование в using если не поможет, посмотри, как можно оптимизировать работу с памятью сделай, к примеру, регулярное выражение строковой константой и единственный компилируемый инстанс Regex'а (в конструктор передав RegexOptions.Compiled) без кода сложно что-либо ещё посоветовать |
| Автор: hug 22.5.2008, 10:12 | ||||
Большое спасибо за ответ. стримы все закрываю ну возможно только, что не в finally Про регулярку спасибо. Но самое выражение константой наверно не получится. Возможно ли все равно использовать комплируемый инстанс?
|
| Автор: mihryak 22.5.2008, 10:33 | ||
| в таком случае нет смысла компиллировать Regex, раз он используется только один раз не углублялся в написанное, но
вот это может быть причиной утечки |
| Автор: hug 22.5.2008, 10:50 |
| спасибо. понял. переместил освобождение стримов в finally |