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

Добрый день Не могу понять куда течет памать, binary увеличивается, но

ни один процесс ее не использует
В чем может быть проблема?

3 ответов

9 просмотров

Есть у сборщика мусора такая особенность, что он вызывается тем чаще, чем больше работает процесс. Кроме того, большие бинари собираются подсчетом ссылок. Если это объединить, то получается, что в системе может существовать процесс, через который проходят сообщения с большими бинарями и который почти ничего не делает (например, просто пересылает бинарь дальше). Пока у него не будет собран мусор, прошедшие через него бинари тоже не будут удалены. Сам я с такой проблемой на практике не сталкивался, но слышал рассказы о таком. Другой вариант, что где-то в состоянии хранится небольший бинарь, который был получен откусыванием кусочка от большого бинаря. Если не предпринимать специальных усилий, то он будет просто ссылкой на кусок большого и, соответсвенно, большой будет жить пока не собран маленький. Больше мне в голову так сходу ничего не приходит.

https://www.coletiv.com/blog/elixir-genserver-memory-issues/

Anatoly-Sidorov Автор вопроса

Нашел проблему, но не могу понять как решить GenStage:consumer сохраняет данные в базу, после записывает в ets краткую информацию Если убрать запись в ets - то сборщик мусора корректно все подчищает Если оставить запись в ets - начинает течь, при этом сам размер ets не сильно растет Примерно так: model = Repo.insert!(...) :ets.insert(:organizations, {inn, {model.uuid, model.discharge_date}}) может быть, что в ets записываются ссылки на значения model и сборщик мусора поэтому не освобождает место из под model?

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта