Warum verwendet mein Skript so viel mehr Speicher, wenn Sie mit mod_perl ausgeführt werden?

StackOverflow https://stackoverflow.com/questions/1606364

Frage

Ich versuche zu lernen, wie man das Perl -Speicher profiliert.

Ich habe ein sehr einfaches Perl Hello-World-Skript und möchte seine Größe im Speicher wissen.

Ich verwende das GTOP -Dienstprogramm, um den Speicher zu messen (Empfohlen in mod_perl -Buch von Stas Beckman). GTOP liefert die Ergebnisse, die mich verwirren.

Wenn ich das Skript aus der Befehlszeile ausführe, sagt GTOP: 7m.

Wenn ich es unterlegt mod_perl, GTOP sagt: 54 m.

Warum so viel?!

Warum das Skriptgedächtnis so stark wächst mod_perl? Oder messen ich das Gedächtnis falsch? Wie profilieren Sie das Perl -Skriptspeicher?

Hier sind das Skript und seine Ausgabe (ich habe Kommas manuell hinzugefügt, um die Zahlen leicht zu lesen)

  1. Ausführen von Befehlszeile

    > perl simple.pl 
    
    size: 7,282688
    share: 2,027520
    diff: 5,255168
    
  2. Ausführen unter mod_perl

    size: 54,878208
    share: 4,661248
    diff: 50,216960
    

Skript einfach.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";
War es hilfreich?

Lösung

Ich denke, wenn Sie Ihr Skript unter mod_perl ausführen, erhalten Sie die Speicherverwendung Ihres Skripts sowie mod_perl sowie Apache.

Siehe auch die Antworten auf diese Fragen:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top