2009-10-05 29 views
2

我運行一個腳本,對文件系統進行文本處理。頁面文件的使用

腳本在文本文件(.h,.cpp)上運行。

當腳本運行時,我看到PF使用率增加,直到它達到分配給頁面文件的VM數量。

有沒有辦法在運行過程中或之後刷新虛擬機?

我已經運行結束關於這一個問題(認爲這是不同的問題): Single sed command for multiple substitutions?

+0

腳本寫了什麼編程語言?你可以透露一些或全部腳本的問題嗎? – 2009-10-05 12:47:06

+0

我在問題中添加了一個鏈接 – Asaf 2009-10-05 13:26:21

+0

這個問題被標記爲「windows」。你如何在Microsoft Windows上運行sed?使用Cygwin? – 2009-10-05 22:51:56

回答

0

沒有,但也許你可以更改腳本消耗更少的內存。

更新。我試圖在Linux上重現這個問題,對應 other question中列出的腳本。在擊:

while read fileName; do 

    echo 
    echo ----------------------------------------------- 
    echo For file $fileName : 

    while read matchItem; do 
     echo Searching for $matchItem 
     echo 
     sed -i "s/$matchItem/XXXXXXXXX $matchItem XXXXXXXXXXXXXX/" $fileName 
    done < allFilesWithH.txt 

done < all.txt 

我已經使用蛋白質序列數據庫的片段(大的文本文件,FASTA格式,高達74 MB)和短肽序列用於測試(例如,有每個文件至少10項內容替換)。 當它運行時,沒有進程正在使用任何重要的內存(如我所料)。 CPU負載 在運行時大約爲50%。因此我不能重現這個問題。

+0

它消耗內存,因爲它處理大量的文件。該腳本運行一個命令(sed)。 sed中是否有內存泄漏問題? P.S我在sed上使用VxWorks開發shell – Asaf 2009-10-05 12:56:21

+0

@Asaf:不,sed是當系統在內存中受到很大限制時設計的。這可能是你的劇本,但不知道更多關於它的內容很難說清楚。 – 2009-10-05 13:14:11

+0

我在問題 – Asaf 2009-10-05 13:28:33

1

大塊一批您的操作,這樣就可以更有效地使用你的記憶,而不是隻加載的一切到內存中。如果您的文件都不大,請限制將這些文件中的文本加載到內存中的線程數。如果使用大文件,請使用您擁有的內存更高效地處理它們。

+0

請參閱上面評論中我使用腳本的方式。我不能大塊或批量它。消耗內存的原因是因爲我運行它非常大量的文件。 – Asaf 2009-10-05 12:57:33

+0

在某些時候,您並未釋放您正在使用的內存。把這個過程分解成可管理的部分,你的記憶問題將變得可管理。更糟糕的情況下,您可以終止進程,並希望GC能爲您刷新內存。 – 2009-10-05 13:03:04

0

pagefile是一個系統資源,不能被任何用戶進程操縱。在這種情況下,增加大小的頁面文件只是應用程序問題的症狀 - 應用程序超出了提交限制。你必須處理問題,而不是症狀。

相關問題