170 похожих чатов

Вечер. Ткните самоучке - есть код, хочу понять где он

так задрачивает память. Профилирование в студии по памяти помощи не дало... Так как не понятно что в этих объктах и почему они столько весят. Что на эту тему почитать есть?..

32 ответов

27 просмотров

https://docs.microsoft.com/ru-ru/dotnet/standard/garbage-collection/fundamentals почитайте про поколения сборки мусора, про кучу больших объектов. У вас в коде лишние аллокации памяти (выделения), возможно, лишние копирования или забытые жирные объекты. Рекомендовал бы смотреть в сторону dotMemory

попробуй dotmemory, там наглядней

Warstone- Автор вопроса
Владислав
https://docs.microsoft.com/ru-ru/dotnet/standard/g...

Ну код не течет. Так что меня больше интересует как найти что аллоцируется и оптимизировать (вернее найти что можно оптимизировать или доказать что текущее - нормально)

Еще это почитай https://habr.com/ru/company/otus/blog/536942/

Warstone- Автор вопроса
Alex
Еще это почитай https://habr.com/ru/company/otus/b...

У меня нету утечек сейчас. Мне количество аллокаций смущает.

Warstone
Ну код не течет. Так что меня больше интересует ка...

Надо делать снепшоты памяти и сравнивать. Можно прямо через диспетчер задач снимать их и заталкивать в дотмемори. Можно dotTrace профилировать, тоже снепшоты можно делать там

Alex
используй структуры по возможности

Их в асинхронный код особо не позаталкиваешь и на любой чих копировать такое себе

Phantom
Хуевый совет

чем же? если человека интересуют именно частые аллокации

Alex
чем же? если человека интересуют именно частые алл...

Если использовать там где не надо, то будет дохуя копирования, может и боксинг

Phantom
Асинхронный код тут чем мешает?

Ну асинки в ref не умеет, а большие структуры, которые на классах текут - самостоятельно копировать?

Phantom
Если использовать там где не надо, то будет дохуя ...

Так это и понятно, я же не советовал все на структуры поменять

Владислав
Ну асинки в ref не умеет, а большие структуры, кот...

А зачем большие структуры вообще делать?

Warstone- Автор вопроса
Alex
используй структуры по возможности

Где можно - использую и unsafe - тоже. Но без фанатизма.

Phantom
А зачем большие структуры вообще делать?

Я ответил, чем мешает асинхронный код структурам. Зачем большие, это к топикстартеру

Warstone- Автор вопроса
Warstone
Где можно - использую и unsafe - тоже. Но без фана...

попробуй еще тут почитать https://blog.maartenballiauw.be/post/2016/10/19/making-net-code-less-allocatey-garbage-collector.html

Warstone
Где?

Ну как минимум, в unsafe

Warstone- Автор вопроса
Phantom
Ну как минимум, в unsafe

Как минимум - нет. Было 10Гб и 2 минуты на старт, сейчас 20Мб и 2 секунды. Спасибо unsafe. Да и потом... Достаточно было выпилить ООП головного мозга из кода.

Warstone
Как минимум - нет. Было 10Гб и 2 минуты на старт, ...

Это потенциальное место для утечки

Warstone- Автор вопроса
Владислав
И что был за код и что за код стал?

Там всю память вгоняли в словарь раза 2 или 3. Не так важно.

Warstone- Автор вопроса
Phantom
Это потенциальное место для утечки

Ну это да. Если не уметь готовить.

Warstone- Автор вопроса
Phantom
Так проверь

Так я вроде сказал. Общий объем памяти у меня не растет со временем.

Warstone- Автор вопроса
Phantom
В что тогда не так?

Не нравится большое количество аллокаций и деаллокаций.

Warstone- Автор вопроса
Phantom
Похуй?

Ну вообще - да... Но интересно-же ))

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта