当我注意到我的脚本在将内容写入文件的while循环中开始暂停时,就会出现这个问题.我首先检查一下我的记忆,看看当我的RAM下降到2-3%时会发生这种情况.然后,我寻找消耗RAM的代码块,并认为当脚本继续向文件提供内容时,它的大小也会增加,这也会占用内存.以下是执行文件创建的代码:
open (my $fh, '>>', $filePath);
while (my $row = $sth->fetchrow_hashref) {
print $fh join ('|', $row->{name}, $row->{address}) "\n";
}
Run Code Online (Sandbox Code Playgroud)
如果我取消注释print语句并运行脚本,我的RAM将不会减少.所以,我很确定我的内存RAM是由FILEHANDLE/Perl背后的其他内容占用了内存.这引出了一个问题,如果有办法将文件从Perl脚本写入磁盘,而不是使用内存RAM?
free在linux中用来检查我的记忆.我的目标是拥有一个以 Integer 作为其 ID 、以 String 作为其值的数据流 (KStream),在本示例中,我们将在该值中存储某人的姓名。然后我还将使用 GlobalKTable 创建一个查找表,该表存储术语作为其键(将与流的值匹配的术语)和一个布尔标志(指示与该术语匹配的任何名称都是“垃圾邮件发送者”)作为价值。
我在这方面的第一个问题是是否可以通过正则表达式/模式匹配而不是严格匹配将 KStream 与 GlobalKTable 连接起来。
如果没有,我是否可以考虑更好的设计考虑来实现相同的目标?