0

我正在构建一个大型导入脚本,该脚本使用来自我怀疑存在内存泄漏的单独代码库的功能。对于相同的操作,它调用代码库多达 10000 次,虽然第一次相对较快(2 秒),但脚本需要很长时间才能运行(超过 100 小时并且还在计数),到最后相同的任务完成到 60 秒或更长时间(并且仍在攀爬)。在发现并修复泄漏时解决此问题的最佳方法是什么?

一些经过头脑风暴的解决方案是:

创建一个运行部分脚本的进程,然后结束它,回收它使用的资源。

使用 shell 脚本多次启动程序,每次完成任务的子集,并将更新的数据输出到文件以供下一次迭代使用

编辑:更改了问题的表述方式,以明确导入和代码库是单独的程序

4

2 回答 2

2

您知道,您提供的任何证据都没有明确指出存储泄漏。真正的问题可能是完全不同的东西,比如设计不佳的算法,或者调整不当的数据库表或查询。

假设这是存储泄漏并应用“创可贴”解决方案可能会浪费时间,或者实际上会使问题变得更糟。

您最好花时间预先确定真正的问题是什么并解决它,而不是尝试一系列变通办法......这可能是徒劳的。

于 2012-07-23T11:16:40.700 回答
0

我通过最小化包含对其他代码库的引用的范围来解决这个问题。基本上每次我初始化一个对象或从其他代码库调用一个函数时,我都会经历一些麻烦以确保它存在的时间尽可能短。通常将引用再次设置为 NULL 以确保删除所有引用。

最终效果很好,将时间从 150 多个小时减少到 30 小时以下。

于 2012-12-09T10:44:58.143 回答