我运行一个在文件系统上进行文本操作的脚本。
该脚本在文本文件(.h、.cpp)上运行。
当脚本运行时,我看到 PF 使用量增加,直到达到为页面文件分配的 VM 数量。
有没有办法在运行期间或之后刷新 VM?
我已经提出了另一个关于它的问题(认为这是不同的问题): Single sed command for multiple substitutions?
我运行一个在文件系统上进行文本操作的脚本。
该脚本在文本文件(.h、.cpp)上运行。
当脚本运行时,我看到 PF 使用量增加,直到达到为页面文件分配的 VM 数量。
有没有办法在运行期间或之后刷新 VM?
我已经提出了另一个关于它的问题(认为这是不同的问题): Single sed command for multiple substitutions?
分块或批处理您的操作,以便您可以更有效地使用内存,而不仅仅是将所有内容加载到内存中。如果您的文件都不大,请限制将这些文件中的文本加载到内存中的线程数。如果使用大文件,请将它们分解以使用您拥有的内存更有效地处理它们。
不,但也许您可以更改脚本以消耗更少的内存。
更新。我试图在 Linux 上重现该问题,对应于另一个问题中列出的脚本。在 Bash 中:
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%。因此我无法重现该问题。
页面文件是系统资源,不能被任何用户进程操作。在这种情况下,页面文件的大小增加只是应用程序问题的一个症状——应用程序超出了提交限制。你必须处理问题,而不是症状。