![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| uranpro |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 571 Регистрация: 7.5.2008 Где: Moscow city Репутация: 1 Всего: 1 |
голову сломал, не могу въехать
есть
делаю так
результат: 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)) -------------------- I want a perfect soul |
||||
|
|||||
| Irdis |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 21.5.2008 Репутация: нет Всего: 1 |
Дело в том, что GC не обещает собрать мусор в тот же момент, в который на объект пропала ссылка.
http://www.rsdn.ru/article/dotnet/GCnet.xml Это сообщение отредактировал(а) Irdis - 6.4.2010, 17:38 |
|||
|
||||
| uranpro |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 571 Регистрация: 7.5.2008 Где: Moscow city Репутация: 1 Всего: 1 |
я знаю =) да и ссылки не пропадали. меня интересует, почему метод .Close()/.Dispose() stream`a не освободил ресы ?
-------------------- I want a perfect soul |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
uranpro, .Close()/.Dispose() не освобождает память. Память в .net освобождается только в момент сборки мусора. Если после GC.Collect(2, GCCollectionMode.Forced) память освобождается - то это как раз не утечка.
|
|||
|
||||
| uranpro |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 571 Регистрация: 7.5.2008 Где: Moscow city Репутация: 1 Всего: 1 |
понятно, но она занимает много времени... и освобождает все, а мне нужно только stream`ы
Добавлено через 2 минуты и 33 секунды точнее не все, а мусор -------------------- I want a perfect soul |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
uranpro, а ты не вызывай сборку мусора. Вызывая сборку всех поколений, с Forced и ожиданием завершения ты практически выбрасываешь все наработки MS по сборке мусора за последние 10 лет
Зачем тебе нужно память из-под стримов освободить? Потому что GC.GetTotalMemory показывает пятизначное число, и оно тебе не нравится? Это не повод лезть в самонастраиваемый механизм GC Методы класса GC вообще нельзя вызывать без полного понимания механизма работы сборщика. Забудь о них и спи спокойно. |
|||
|
||||
| uranpro |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 571 Регистрация: 7.5.2008 Где: Moscow city Репутация: 1 Всего: 1 |
с этой памятью... что-то я все напутал. ведь gc сам сделает все что нужно.
-------------------- I want a perfect soul |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |