2009-10-05 20 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是一个系统资源,不能被任何用户进程操纵。在这种情况下,增加大小的页面文件只是应用程序问题的症状 - 应用程序超出了提交限制。你必须处理问题,而不是症状。

相关问题