Обновление 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 секунд) не связано с буферизацией сообщений, в вызове только одно сообщение.
Это просто ошибка или как я могу решить проблему использования памяти канала?