为什么即使我使用Archive::Tar:Streamed,%MEM也会逐渐增加?

3
我正在使用Archive::Tar::Streamed来归档一个4GB的目录,其中包含非常小的源代码文件和一些JAR文件。我使用了一台带有4GB RAM的系统,并使用Archive::Tar::Streamed,因为我不希望我的整个目录都在内存中,这会导致内存不足的情况。我使用File::Find以DFS方式逐个读取目录中的文件,并使用Archive::Tar::Streamed中的add方法将其写入tar文件。在任何给定时间点,只有一个文件驻留在内存中,即使如此,我的perl进程的%MEM也逐渐增加。它已经增加到20%。我的目录中没有800MB大小的文件。我有两个问题: 1)为什么%MEM逐渐增加? 2)为什么它已经增加到20%?是因为Archive::Tar在将内容写入tar文件后没有释放内存吗?
1个回答

2

当您以流为导向的方式处理数据时,您的VSZ内存信封增长并不正常,特别是对于RES(%MEM),在您这种应用程序中应该保持稳定。

因此,我强烈怀疑数据的交叉引用被保留了下来(例如在哈希中),或者(可能性较小)生成了循环引用。

请参阅此帖子{{link1:“有没有工具可以找到我perl程序中的内存泄漏”}},以获取有关跟踪哪些变量(无论是在您的代码中还是在您使用的模块中)增加内存信封或保留交叉引用的提示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接