4

perl メモリのプロファイルを作成する方法を学ぼうとしています。

非常に単純な Perl の hello-world スクリプトがあり、そのメモリ内のサイズを知りたいです。

GTopユーティリティを使用してメモリを測定します(Stas Beckmanによるmod_perlブックで推奨)。GTop は、私を混乱させる結果を提供します。

コマンドラインからスクリプトを実行すると、GTop は次のように表示します: 7M.

で実行するとmod_perl、GTop は次のように表示します: 54M.

なんでそんなに!?

なぜスクリプトのメモリが で大きくなるのmod_perlですか? それとも、間違った方法でメモリを測定していますか? perl スクリプトのメモリをどのようにプロファイリングしますか?

これがスクリプトとその出力です(数字を読みやすくするために手動でカンマを追加しました)

  1. コマンドラインから実行

    > perl シンプル.pl
    
    サイズ: 7,282688
    シェア: 2,027520
    差分: 5,255168
    
  2. mod_perl で実行

    サイズ: 54,878208
    シェア: 4,661248
    差分: 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";
4

1 に答える 1

7

mod_perl の下でスクリプトを実行すると、スクリプトのメモリ使用量、mod_perl のメモリ使用量、および apache のメモリ使用量が得られると思います。

これらの質問に対する回答も参照してください。

于 2009-10-22T11:02:44.820 に答える