| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > утечка памяти |
| Автор: uranpro 6.4.2010, 15:41 | ||||
| голову сломал, не могу въехать есть
делаю так
результат: Memory in use 370 KB, after start Memory in use 370 KB, after msg create Memory in use 370 KB, after fs open Memory in use 12191 KB, after fs copy to msg.stream Memory in use 12199 KB, after fs.close Memory in use 32214 KB, after ms2 = msg.GetMStream Memory in use 32214 KB, after msg.dispose Memory in use 32239 KB, after msg2 load from ms2 Memory in use 32239 KB, after ms2.close Memory in use 32239 KB, after msg2.dispose в чем дело ? как с этим бороться ? (кроме GC.Collect(2, GCCollectionMode.Forced)) |
| Автор: Irdis 6.4.2010, 17:37 |
| Дело в том, что GC не обещает собрать мусор в тот же момент, в который на объект пропала ссылка. http://www.rsdn.ru/article/dotnet/GCnet.xml |
| Автор: uranpro 6.4.2010, 18:06 |
| я знаю =) да и ссылки не пропадали. меня интересует, почему метод .Close()/.Dispose() stream`a не освободил ресы ? |
| Автор: PashaPash 6.4.2010, 18:55 |
| uranpro, .Close()/.Dispose() не освобождает память. Память в .net освобождается только в момент сборки мусора. Если после GC.Collect(2, GCCollectionMode.Forced) память освобождается - то это как раз не утечка. |
| Автор: uranpro 7.4.2010, 10:18 |
| понятно, но она занимает много времени... и освобождает все, а мне нужно только stream`ы Добавлено через 2 минуты и 33 секунды точнее не все, а мусор |
| Автор: PashaPash 7.4.2010, 14:39 |
| uranpro, а ты не вызывай сборку мусора. Вызывая сборку всех поколений, с Forced и ожиданием завершения ты практически выбрасываешь все наработки MS по сборке мусора за последние 10 лет Зачем тебе нужно память из-под стримов освободить? Потому что GC.GetTotalMemory показывает пятизначное число, и оно тебе не нравится? Это не повод лезть в самонастраиваемый механизм GC Методы класса GC вообще нельзя вызывать без полного понимания механизма работы сборщика. Забудь о них и спи спокойно. |
| Автор: uranpro 8.4.2010, 12:37 |
| с этой памятью... что-то я все напутал. ведь gc сам сделает все что нужно. |