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

我的脚本执行以下操作

  1. 读取一个巨大的文本文件,并从中创build一个哈希值(大约2千4百万个简单的键值对,耗时约5分钟,占用4Gb计算机内存的92%)
  2. 使用哈希信息运行模拟(大约30分钟)
  3. 在模拟结束时打印结果(到文件和stdout)

然后在最后的打印声明之后等待10分钟以上并退出。 最后的等待不会每次都发生。 在wait top命令期间显示相同的92%的内存使用率,但没有CPU使用率。 为什么有时候会这样呢? 如果我按Ctrl C ,它会立即退出,而不会改变结果(结果)。 我如何debugging这个或者是预期的行为,因为哈希是巨大的?

编辑

是否有可能通过从哈希中删除不需要的键值对来回收一些内存?

我假设你知道'删除'功能(所以删除引用perldoc -f删除:)

对于内存调试,你可以使用valgrind这个提示可以帮助: Perl v5.10.1是否有内存泄漏或如何解释valgrind它建议使用:

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