Я пытаюсь научиться профилировать память Perl.
У меня очень простой сценарий Perl hello-world, и я хочу узнать его размер в памяти.
Я использую утилиту GTop для измерения памяти ( рекомендуется в книге mod_perl Стаса Бекмана).
GTop предоставляет результаты, которые меня смущают.
Когда я запускаю скрипт из командной строки, GTop говорит: 7M.
Когда я запускаю его под mod_perl
, GTop говорит: 54M.
Почему так много?!
Почему память скриптов так сильно увеличивается под mod_perl
?
Или, может быть, я неправильно измеряю память?
Как вы профилируете память скрипта Perl?
Вот сценарий и его вывод (я добавил запятые вручную, чтобы легко прочитать цифры)
Запуск из командной строки
> perl simple.pl
size: 7,282688
share: 2,027520
diff: 5,255168
Запустить под mod_perl
size: 54,878208
share: 4,661248
diff: 50,216960
Скрипт simple.pl
#!/usr/bin/perl
use strict;
use warnings;
use CGI ();
my $cgi = CGI->new;
print $cgi->header('text/plain');
use GTop;
print "Hello, world!\n";
my $m = GTop->new->proc_mem($$);
print "size: ".$m->size."\n";
print "share: ".$m->share."\n";
my $diff = $m->size - $m->share;
print "diff: $diff\n";