Как программно определить использование памяти моей программой Perl под Windows? - PullRequest
2 голосов
/ 12 июля 2009

Я использую ActivePerl под Windows для своего сценария Perl, поэтому я могу посмотреть, сколько памяти он использует, на вкладке «Процессы» в диспетчере задач Windows.

Я считаю, что делать это довольно громоздко. Есть ли другой способ определить использование памяти моей программой Perl?

Ответы [ 4 ]

7 голосов
/ 12 июля 2009

Один из способов - использовать Proc::ProcessTable:

use Proc::ProcessTable;

print 'Memory usage: ', memory_usage(), "\n";

sub memory_usage() {
    my $t = new Proc::ProcessTable;
    foreach my $got (@{$t->table}) {
        next
            unless $got->pid eq $$;
        return $got->size;
    }
}
4 голосов
/ 13 июля 2009

Если вы используете ActivePerl, некоторые из этих решений не будут работать. Я собрал вместе кое-что, что, по моему мнению, должно работать из коробки в ActivePerl, но это не было проверено менее чем за 5.10, поэтому ваш пробег может отличаться. Как ответил Пакс, вы можете получить разные цифры в зависимости от того, что вы просите, то есть MaximumWorkingSetSize против WorkingSetSize и т. Д.

use Win32::OLE qw/in/;

sub memory_usage() {
    my $objWMI = Win32::OLE->GetObject('winmgmts:\\\\.\\root\\cimv2');
    my $processes = $objWMI->ExecQuery("select * from Win32_Process where ProcessId=$$");

    foreach my $proc (in($processes)) {
        return $proc->{WorkingSetSize};
    }
}

print 'Memory usage: ', memory_usage(), "\n";
2 голосов
/ 12 июля 2009

WMI - это стандартный способ для Windows исследовать подобные вещи внутри программы. Я полагаю, вы бы искали это .

MaximumWorkingSetSize - это значение используемой физической памяти. VirtualSize - это размер вашего общего используемого адресного пространства.

1 голос
/ 12 июля 2009

Попробуйте:

open( STAT , "</proc/$$/stat" )
    or die "Unable to open stat file";
@stat = split /\s+/ , <STAT>;
close( STAT );

Вы можете взглянуть на " Определение использования памяти процессом " и " Определение использования памяти программой Perl изнутри Perl " на PerlMonks .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...