更新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秒内攀升了),并不是由于消息缓冲,提示中只有一条消息。
这仅仅是一个错误还是我该如何解决通道的内存使用情况?