循环管道占用大量内存

Huge memory usage with circular pipeline

更新 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)和再次将其发送回同一频道。管道一旦启动就不会停止。

内存使用量的增长(我达到大约 600MB 并在大约 10 秒内攀升),不是由于消息缓冲,提示中只有一条消息。

这只是一个错误还是我该如何解决频道的内存使用问题?

似乎由 Jonathan Worthington commit

解决

d5044de

25b486d