Perl脚本奇怪的行为/回收内存

时间:2013-11-21 19:09:57

标签: linux perl hash operating-system swap

我的脚本执行以下操作

  1. 读取一个巨大的文本文件并从中创建一个哈希值。(大约2400万个简单的键值对。大约需要5分钟,占用4Gb计算机内存的92%)
  2. 使用哈希信息运行模拟。(大约需要30分钟)
  3. 在模拟结束时打印结果(到文件和标准输出)
  4. 然后在最后一个打印语句后等待10分钟以上并退出。最后的等待不会每次都发生。在等待期间top命令显示相同的92%内存使用量但没有使用cpu。为什么它有时会在完成后等待?如果我按 Ctrl C ,它会立即退出而不会改变结果(结果)。我如何调试这个或者它是预期的行为,因为哈希是巨大的?

    修改

    是否可以通过删除散列中不需要的键值对来动态回收一些内存?

1 个答案:

答案 0 :(得分:1)

我假设您知道'删除'功能(因此删除了对perldoc -f delete的引用:)

对于内存调试,您可以使用valgrind 此提示也很有帮助:Does Perl v5.10.1 have memory leaks or how to interpret valgrind 它建议使用:

使用Perl :: Destruct :: Level level => 1;