我在使用File :: Slurp的大文件中sl but不已,但考慮到文件的大小,我可以看到我必須在內存中使用它兩次,或者它可能會變成16位unicode。我怎樣才能在Perl中最好地診斷這類問題?我應該使用哪種工具來查找我在Perl中的內存分配?
我拉入的文件大小爲800mb,我的perl進程正在分析在運行時分配的數據大約爲1.6gb。
我意識到我可能對我的問題的理由錯了,但我不確定證明/反駁我的理論的最有效的方法。
更新:
我從犯罪嫌疑人的名單elminated狡猾的字符編碼。看起來我在某個時候複製了變量,我只是無法弄清楚在哪裏。
更新2:
我現在已經做了一些更多的研究,發現它實際上是剛剛從文件:: Slurp的是造成問題的數據。我不得不通過文件一看,發現我能得到它返回一個scalar_ref,即
my $data = read_file($file, binmode => ':raw', scalar_ref => 1);
然後,我沒有得到我的記憶中的通貨膨脹。這是有道理的,而且在我的情況下獲取數據時最合理。
有關查看變量存在的信息等通常有幫助,但謝謝。
This SO post may be helpful:[我怎樣才能以編程方式確定我的Perl程序在Windows下的內存使用情況?](http://stackoverflow.com/questions/1115743/how-can-i-programmatically-determine-我-perl的 - 程序內存使用情況的下窗戶)。 – Zaid 2010-06-09 14:49:25
這通常是有趣的,雖然它是在這個級別的數據,讓我意識到我有這個錯誤。 – 2010-06-09 14:51:04
sl the整個文件對你的過程是必要的嗎?是否可以逐行分析? – 2010-06-09 15:03:20