Огромное использование памяти с круговым конвейером - PullRequest
6 голосов
/ 26 марта 2019

Обновление 2: Как отметил @Valle Lukas, похоже, это связано с устранением утечки.

Обновление 1:

Хорошо, я нашел способ попробовать это снова и получитьгораздо более простой код, который демонстрирует проблему, с которой я столкнулся:

my $channel=Channel.new;    #create a new channel
$channel.send(0);           #kickstart the circular pipeline
react {
    whenever $channel {
        say $_;
        $channel.send($_ + 1); #send back to same pipeline
        #sit back and watch the memory usage grow
    }
}

По сути, я создаю одностадийный конвейер через Channel, отправляю ему одно сообщение, затем настраиваю react / whenever блокирует обработку сообщения (добавьте 1) и снова отправляет его на тот же канал.Однажды начавшийся конвейер никогда не останавливается.

Увеличение использования памяти (я получаю около 600 МБ и набираю около 10 секунд) не связано с буферизацией сообщений, в вызове только одно сообщение.

Это просто ошибка или как я могу решить проблему использования памяти канала?

1 Ответ

4 голосов
/ 05 апреля 2019

Кажется, что к нему обращается коммит Джонатана Уортингтона

d5044de

и

25b486d

...