0

我创建了一个简单的 perl 脚本。它唯一做的就是等待 5 秒。

当我通过 mod_perl 在服务器上生成脚本时,会占用大量内存。该实例占用 36 兆字节。

为什么分配了这么多内存?如何最小化运行脚本从系统中占用的内存?

这是运行 2 个脚本时“top”实用程序的输出。

 5162 www-data  25   0 36732 8124 2868 S  1.3  3.1   0:00.05 apache2
 5161 www-data  25   0 36732 8124 2868 S  0.7  3.1   0:00.04 apache2

剧本。

#!/usr/bin/perl
use CGI;

my $query= new CGI;
my $content = "5 second delay...\n";

$query->header(
    '-Content-type' => "text/plain",
    '-Content-Length' => length($content)
);

print $content;

sleep(5);
4

1 回答 1

0

不,它不需要 36 兆字节。

这是进程中分配的地址空间量。它包括从可执行文件映射的空间、从文件映射的 mmap() 以及与其他进程共享的关键空间。

其中绝大多数将与其他进程(尤其是其他 Apache 工作进程)共享。

要了解它实际使用了多少内存,请在工作中使用一些 Perl 内存分析器。

于 2009-10-10T21:19:08.450 回答