我有一個310MB大小的文本文件(未壓縮)。當使用PerlIO::gzip打開文件並將其解壓縮到內存中時,在perl內存不足之前,該文件很容易填充2GB的RAM。當我在Perl中將文件讀入內存時,爲什麼會耗盡這麼多內存?
打開文件如下:
open FOO, "<:gzip", "file.gz" or die $!;
my @lines = <FOO>;
很顯然,這是很容易在Perl中打開gzip壓縮文件超級方便的方法,但它佔用的空間,一個可笑的金額!我的下一步是將文件解壓縮到HD,將文件的行讀取到@lines,在@lines上進行操作,然後將其壓縮回去。有沒有人知道爲什麼打開一個壓縮文件時消耗超過7倍的內存?有沒有人有另一種想法,我可以如何解壓縮這個gzip文件到內存中,而不會佔用大量的內存?
也,Perl 5.12.1 64在Mac OS X 10.6 – 2010-10-05 01:09:19
你剛纔問的問題第七千標記在stackoverflow上的'perl'。恭喜! :-) – rafl 2010-10-05 01:36:06