powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Почему не освобождается память ни какими усилиями?
23 сообщений из 23, страница 1 из 1
Почему не освобождается память ни какими усилиями?
    #39614308
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему нижележащее не работает:
Код: c#
1.
2.
3.
GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced, true, true);
GC.WaitForPendingFinalizers();
SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1);


То есть с виду оно работает, то есть в менеджере задач видно, что при исполнении 3ей строки память, размещенная этой .NET ассамблеей освобождается (все 2 гига). Но последующая попытка получить объем свободной памяти для процесса, и разместить столько же сколько было освобождено, срубается по ошибке "out of memory"? Процесс 64 бит. Размещает сколько есть свободного минут небольшой запас мег 100. Все синхронизировано во избежание.
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39620830
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получается, что 2й раз удается разместить чуть больше, чем оставалось свободного от первого раза.
То есть например, свободно 2.1 гига, размещаем 2 ровно, эти строчки освобождают 2, разместить удается 120-130 метров
Думаю эта разница скорее связана с "пульсацией" программ и ОС, чем имеет объективную причину.
В общем, мусорщик .NET не работает от слова вообще. В жабе это как два пальца - захотел, освободил. А здесь или каленым железом, или вообще никак. Кому нибудь удавалось принудить его освобождать? Судя по реакции некоторых личностей связанных с мелкими мягкими, это больная тема.
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39620836
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo Kobler....Процесс 64 бит.....Уверен?
Потому что память выделится (вроде как) сколько угодно, но пока ты к ней не обратишься, реально не существует и не проверяется на возможность ее реальной блокировки и использования.
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39620870
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo Kobler,
Попробуй не управлять память явно. Только освобождай ссылки.
Вот тогда выкладывай ошибку.
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39620886
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo Kobler,

а цель, задача какая? "В жабе это как два пальца" и тут хочется?
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39621351
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo KoblerСудя по реакции некоторых личностей связанных с мелкими мягкими, это больная тема.

По ходу проблемы только у жабоводов.
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39621377
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Мусорщик памяти что там что там есть. Походу это личная проблема ТС.
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39621407
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть объекты занимают больше 86кб, они размещаются не в HEAP, а в LOH.
Память выделенная под LOH не дефрагметируется и не высвобождается до тех пор, пока в ней не останется не 1 объекта.
То есть, если создать 100500 объектов размером в 100кб, а потом удалить ссылки на 100499, но 1 не удалить, вся выделенная память будет использоваться до тех пор, пока последняя ссылка не протухнет.

В 99% случаев нет не 1 причины для вызова GC.Collect(),
Управлять памятью ручками в C# еще хуже и более черевато, чем управлять GC.
тем более сборка мусора для 2 поколения выполняется значительно дольше, чем для 0 и 1

Чтоб понять, что именно занимает место в памяти используйте профайлеры, либо сделайте Dump и смотрите через анализаторы dump'а
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39621472
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему мусоросборщик .NET настолько больная тема, что вызыввает сразу переход на личности и бросание калом?
"Не нужно беспокоиться" и "нельзя пытаться" - две большие разницы. Кому-то не нужно беспокоиться и они не беспокоятся и все прекрасно. Таких разрабов на .NET 99%. А кому-то попадается задача которую нужно решить любой ценой и им приходится беспокоиться и пытаться. Ну нахамите вы мне, закидаете калом, но задачу я все равно решу, получу за это бабки и никому не скажу как. Удачи вам.
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39621487
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo KoblerПочему мусоросборщик .NET настолько больная тема, что вызыввает сразу переход на личности и бросание калом?
"Не нужно беспокоиться" и "нельзя пытаться" - две большие разницы. Кому-то не нужно беспокоиться и они не беспокоятся и все прекрасно. Таких разрабов на .NET 99%. А кому-то попадается задача которую нужно решить любой ценой и им приходится беспокоиться и пытаться. Ну нахамите вы мне, закидаете калом, но задачу я все равно решу, получу за это бабки и никому не скажу как. Удачи вам.
да и вам не хворать
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39621504
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo KoblerПочему мусоросборщик .NET настолько больная тема, что вызыввает сразу переход на личности и бросание калом?

Повторюсь, по ходу проблемы и странные извращённые комплексы только у жабоводов. Лечитесь.
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39621524
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo Koblerно задачу я все равно решу, получу за это бабки и никому не скажу как.он не жабовод.
Там взрослые люди и так не пишут).
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39621534
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Gobzo Koblerно задачу я все равно решу, получу за это бабки и никому не скажу как.он не жабовод.
Там взрослые люди и так не пишут).

Да понятно. Суть в психических отклонениях у людей, которые приходят в ветку по определённой технологии и начинают нести что-то типа «а вот в XXX всё с этим нормально...», помогать больным не хочется, их надо лечить.
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39621541
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так как все таки освободить память в .NET чтобы ее можно было повторно использовать? Примерчик можно? Я свой привел.
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39621553
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo Kobler,

Чтобы память очистить, вы должны освободить все корневые ссылки. Пока вы этого не сделаете, любые GC.Collect будут бесполезны. Вы бы хоть почитали, как работают сборщики мусора.
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39621560
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

объект порожден от idisposable и завернут в using. когда код вышел за закрывающую скобку, и вышел из метода, какие остаются причины не освобождать?

или перефразируем: если память не освободилась по законным причинам, почему SetProcessWorkingSetSize() успешно возвращает working set к размеру до размещения объекта?
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39621574
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo Koblerобъект порожден от idisposable и завернут в using. когда код вышел за закрывающую скобку, и вышел из метода, какие остаются причины не освобождать?

IDisposable имеет ровно никакое отношение к управлению памятью. Точнее, в Dispose вы можете обнулить ссылки, выполнить процедуры по очистке занимаемых ресурсов, освободить дескипторы файлов, закрыть соединения и т.д. Если имеются unmanaged ресурсы, то очистить их. На управление памятью паттерн Disposable это никак не влияет.

Кроме того, мы откуда знаем как именно и с чем вы работаете? Какую задачу вы пытаетесь решить? Какая версия .NET, какие условия?

Как и чем именно вы забили память? Как долго память была занята? Какой характер данных, с которыми вы работаете?
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39621577
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo Kobler,

Достал свой хрустальный шар, протёр пылюку, вот что он мне выдал, попробуйте:

Код: c#
1.
2.
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
GC.Collect();
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39621584
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Круто! С этой строчкой работает. Пытаюсь вставить картинку, но что-то в превью ее не видно



1. размещение 5.6 гиг
2. вызовы сборщика
3. посидели, подождали может быть оно само освободит, но нет. вызов API для сокращения working set.
дальше повторное размещение.
если не использовать API то повторное размещение видит только 1.1 гиг свободных и только его может разместить вместо спада после 3 там такой бугорочек небольшой. вот вам и мусорщик.

Спасибо!
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39621585
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прямая ссылка на скрит таскменеджера https://imgur.com/M2TxiYZ
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39621592
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo KoblerПытаюсь вставить картинку, но что-то в превью ее не видноПотому что ссылку надо давать на картинку, а не на страничку с кучей баннеров ))
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39621597
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo Koblerвот вам и мусорщик

Сборщик мусора не панацея, работая с большими объёмами данных в памяти следует избегать фрагментации, работать большими блоками и переиспользовать выделенную память.
...
Рейтинг: 0 / 0
Почему не освобождается память ни какими усилиями?
    #39621601
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

так и делаем, размещаем маленькими буферами адаптивного размера, поэтому фрагментация не влияет.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Почему не освобождается память ни какими усилиями?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]