2009-10-10 53 views
0

我已經創建了一個簡單的perl腳本。 它唯一要做的就是等待5秒鐘。如何最大限度地減少mod_perl腳本的內存分配?

當我通過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); 

回答

0

不,不需要36兆字節。

這就是過程中分配的地址空間量。它包括從可執行文件映射的空間,來自文件的mmap(),以及與其他進程共享的關鍵空間。

絕大多數它將與其他進程(特別是其他Apache工作進程)共享。

要找出它真的使用了多少內存,請在工作中獲取一些Perl內存分析器。

+0

謝謝,馬克,這個解釋正是我所期待的。 – Pavel 2009-10-12 16:01:07

相關問題