【问题标题】:Page File Usage页面文件使用
【发布时间】:2009-10-05 12:39:30
【问题描述】:

我运行一个对文件系统进行文本操作的脚本。

脚本在文本文件(.h、.cpp)上运行。

当脚本运行时,我看到 PF 使用量一直在增加,直到达到为页面文件分配的 VM 数量。

有没有办法在运行期间或之后刷新 VM?

我对此提出了另一个问题(认为这是不同的问题): Single sed command for multiple substitutions?

【问题讨论】:

  • 脚本是用什么编程语言编写的?你能透露问题中的部分或全部脚本吗?
  • 我在问题中添加了链接
  • 问题被标记为“windows”。如何在 Microsoft Windows 上运行 sed?使用 Cygwin?
  • 我通过 VxWorks 开发 shell 运行脚本

标签: windows memory-management pagefile


【解决方案1】:

Chunkbatch 您的操作,以便您可以更有效地使用内存,而不仅仅是将所有内容加载到内存中。如果您的文件都不大,请限制将这些文件中的文本加载到内存中的线程数。如果使用大文件,请将它们分解以使用您拥有的内存更有效地处理它们。

【讨论】:

  • 请在上面的评论中查看我使用脚本的方式。我不能分块或分批。消耗内存的原因是因为我为大量文件运行它。
  • 在某些时候你没有释放你正在使用的内存。将过程分解为可管理的部分,您的记忆问题将变得易于管理。更糟糕的情况是你可以终止进程并希望 GC 会为你刷新内存。
【解决方案2】:

不,但也许您可以更改脚本以减少内存消耗。

更新。我试图在 Linux 上重现该问题,对应于 other question 中列出的脚本。在 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%。因此我无法重现该问题。

【讨论】:

  • 它会消耗内存,因为它适用于大量文件。该脚本运行单个命令 ( sed )。 sed中是否存在内存泄漏问题? P.S 我在 VxWorks 开发 shell 上使用 sed
  • @Asaf:不,sed 是在系统内存非常受限时设计的。这可能是您的脚本,但如果不了解更多信息就很难分辨。
  • 我在问题中添加了链接
  • 脚本是一个批处理文件 (BAT),问题是运行期间 PF 使用率过高。我达到了最大值,但我无法运行更多 sed 命令
【解决方案3】:

页面文件是系统资源,不能被任何用户进程操作。在这种情况下,页面文件的大小增加只是应用程序问题的一个症状——应用程序超出了提交限制。你必须处理问题,而不是症状。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多