小编tir*_*esh的帖子

Perl:在运行时构建二维数组时出现内存不足错误

我是初学者.我试图在运行时从二进制文件构建一个2d数组.我收到了"内存不足"的错误.我在windows7中使用Perl 5.16.3.我的输入文件大小约为4.2MB.我的系统具有4GB的物理内存,我使用90%的使用率,然后在运行此代码时显示内存不足错误.

我尝试了很多方法来调试它.只有当我将b32减少到b16或更低时,我才能成功运行.即使这样,如果文件大小增加超过4MB,则错误再次出现.我尝试在执行代码时查看任务管理器中的物理内存使用情况,并且不断增加.

我的朋友怀疑这应该是内存泄漏问题.我无法与他的嫌犯弄清楚.我需要帮助解决这个问题.

#!/usr/bin/perl
use strict;
use warnings;

open( DATA, 'debug.bin' ) or die "Unable to open:$!";
binmode DATA;
my ( $data, $n, $i );
my @2dmatrix;
while ( $n = read DATA, $data, 4 ) {
    push @2dmatrix, [ split( '', unpack( 'b32', $data ) ) ];
}
print scalar(@2dmatrix);
print "completed reading";
close(DATA);
Run Code Online (Sandbox Code Playgroud)

只是为了明确要求.从2d数组构建中,我需要从列B中的特定模式(11111111000000001111111100000000)对应的列A中提取内容.这需要在文件大小为500Mb的4组列上完成.

perl binaryfiles out-of-memory dynamic-arrays perl-data-structures

2
推荐指数
1
解决办法
211
查看次数