75 lines
1.2 KiB
Perl
75 lines
1.2 KiB
Perl
die "usage: perl memoryReport.pl [-c (sort by count) | -a (sort by allocated amount)] [-l] logFile.txt" if (@ARGV < 1 || $ARGV[0] eq "-h");
|
|
|
|
$sortMethod = 0; # 0 = using sort by allocated amount, 1 = sort by allocation count
|
|
|
|
if ($ARGV[0] eq "-c")
|
|
{
|
|
shift @ARGV;
|
|
$sortMethod = 1;
|
|
}
|
|
|
|
if ($ARGV[0] eq "-a")
|
|
{
|
|
shift @ARGV;
|
|
$sortMethod = 0;
|
|
}
|
|
|
|
|
|
if ($ARGV[0] eq "-l")
|
|
{
|
|
shift @ARGV;
|
|
$lines = 1;
|
|
}
|
|
|
|
sub sortAllocated
|
|
{
|
|
return -($allocated{$a} <=> $allocated{$b});
|
|
}
|
|
|
|
sub sortCount
|
|
{
|
|
return -($count{$a} <=> $count{$b});
|
|
}
|
|
|
|
while (<>)
|
|
{
|
|
chomp;
|
|
|
|
if (/memory allocation/ || /memory leak/)
|
|
{
|
|
s/.*[\/\\]//;
|
|
s/^.*unknown/unknown/;
|
|
s/:.*,//;
|
|
s/bytes$//;
|
|
s/\(.*\)// if (! $lines);
|
|
($file, $size) = split;
|
|
$allocated{$file} += $size;
|
|
$count{$file} += 1;
|
|
}
|
|
elsif (s/: alloc / /)
|
|
{
|
|
s/=.*//;
|
|
s/\(.*\)// if (! $lines);
|
|
($file, $size) = split;
|
|
$allocated{$file} += $size;
|
|
$count{$file} += 1;
|
|
}
|
|
}
|
|
|
|
if ($sortMethod == 0)
|
|
{
|
|
# print sorted by allocated amount
|
|
foreach (sort sortAllocated keys %allocated)
|
|
{
|
|
print $count{$_}, "\t", $allocated{$_}, "\t", $_, "\n";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
# print sorted by # allocations
|
|
foreach (sort sortCount keys %count)
|
|
{
|
|
print $count{$_}, "\t", $allocated{$_}, "\t", $_, "\n";
|
|
}
|
|
}
|