【笔记】Python进程使用内存后不释放

使用python进行大量的文件IO读写,压缩,复制,数据操作过程中RES占用(0.2G-5G,Python的GC会频繁地malloc/free),发现RES内存不释放。

  1. 排查代码后,没有发现内存泄露的情况(实际上有泄露,但是修改代码后,依然没有解决本文的问题),GC也是默认开启的。
  2. 使用tracemalloc,objectgraph调试,Python对象的产生和释放并没有啥异常,我们使用的是大对象,应该也不会被Python缓存。
  3. 考虑到代码中使用pandas.DataFrame,Google发现类似的问题,还有issue,发现可能是Glibc优化问题。
  4. 将数据容器改为Python内置类型list,dict,我们使用简单的Python脚本,持续频繁进行大对象的生成和释放,发现还是有问题。实际调测中也发现,这个问题给人的整体感觉不是代码哪里有问题,而是哪里有人做了优化,但是Python的对象内存管理是基于引用计数的(refcnt为0直接decref回收),python内存池也没发现大内存驻留,操作系统brk和mmap也并没有不释放内存,只能是C库的问题了)。没法继续定位了,需要太多时间成本了。
  5. 那么我们在Python中如何手动分配释放内存?我们使用进程内存隔离的能力直接管理内存
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值