Marpa::R2泄漏内存



我使用的是最新版本的marpa::r2(marpa-r2-2.065_002),它似乎很快就耗尽了所有内存。我写了下面的脚本来测试它。

use strict;
use warnings FATAL => 'all';
use Marpa::R2;
use Data::Dumper;
my $grammar = Marpa::R2::Scanless::G->new({
 action_object => __PACKAGE__,
 source => (<<'END_OF_SOURCE'),
 :default ::= action => ::array
 :start ::= path
 path ::=
  step               action => _do_step
 step ~ [a-z]+ 
END_OF_SOURCE
});
sub _do_step{ return {step => $_[1]}};

sub new {}     #The Marpa::R2 needs it
sub compile{
 my ($query) = @_; 
 return undef unless $query;
 my $reader = Marpa::R2::Scanless::R->new({
  grammar => $grammar,
  trace_terminals => 0,
 });
 $reader->read($query);
 print Dumper $reader->value;
}
compile($_) foreach ('aaaa'..'zzzz'); 

我能做些什么来防止内存泄漏?

编辑:这现在被报告为rt.cpan的错误。

编辑:它现在是固定的发布Marpa-R2 2.066000。感谢

在CPAN上的Marpa-R2 2.065_006中修复了泄漏。感谢你指出这一点,感谢amon提供的最简单的例子,它为我节省了时间,让事情变得更容易。

问题出在Perl代码中。两个结构相互引用——一个循环引用。使用amon的示例测试固定版本会产生随时间推移绝对平稳的内存使用。

我会尽快在CPAN上将此修复程序编入索引(非开发人员的)版本。

相关内容

  • 没有找到相关文章

最新更新