python2执行程序内存溢出导致被killed的问题因果分析

问题来源:

执行一段程序,对某个函数重复执行,当执行到一半时,就显示被killed,重复几次均如此。为什么会这样呢?

第一步、定位被killed的根本原图;

       使用vi /var/log/messages查看日志。日志显示,是由于内存溢出导致的。

第二步、定位内存溢出的原因:

在主要的函数的前面加入@profile,用于显示每行代码的内存使用情况。

通过输出显示,该函数的内存一直在增长。

第三、第一种假设,会不会是某某变量没有释放导致内存一直在增加。

深入分析发现,并不存在这种情况。因为没有使用到全局变量。

这个函数一进来,他的内存就是上次执行的最后使用内存。能确定的是字典内存肯定没有释放。

第四步、加入del与gc.collect命令释放内存

在函数内部加入del与gc.collect命令仍然无法释放内存。其结果仍然是被killed;

使用profile可以发现内存并没有得到释放,至少在运行的时候没有立马释放。

第五步、寻找立马释放的方法

网卡搜索此方法有效,如下所示

del lst[:]

del lst

gc.collect

实验中发现使用del lst[:]能立马有效。

最终的结论就是要删除真正储存内存的东西,才能真正释放当下释放内存。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: 根据您提供的信息,当您运行程序时,它在运行30分钟后保存了一个文件并自行终止,并且命令行显示"Killed"。这可能是由于内存不足导致的。引用\[3\]中提到了使用sudo dmesg | tail -7命令可以查看oom-kill之后被killed的程序的pid和uid,以及内存使用情况。根据引用\[3\]中的信息,您可以检查程序的虚拟内存和常驻内存使用情况,看是否超出了系统可用的内存限制。如果程序使用的内存超过了系统的限制,操作系统可能会自动终止该程序以释放内存资源。您可以尝试优化程序的内存使用,例如减少数据的加载或使用更高效的数据结构来减少内存占用。另外,您还可以检查系统日志文件(如引用\[2\]中提到的/var/log/syslog)以获取更多关于程序被终止的信息。 #### 引用[.reference_title] - *1* [命令行:Python程序显示“Killed”](https://blog.csdn.net/weixin_42099176/article/details/113401435)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Linux下Python程序Killed分析其原因](https://blog.csdn.net/dta0502/article/details/82016616)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Linux下python执行Killed](https://blog.csdn.net/ximaiyao1984/article/details/127449714)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值