python 释放内存_使用malloc_trim管理Python程序GC问题

本文探讨了Python自动内存管理的挑战,尤其是内存效率和内存增长问题。介绍了malloc_trim函数如何帮助释放内存回操作系统,以及如何在Python应用中使用malloc_trim进行内存优化。还提到了jemalloc作为替代内存分配器的方案,以及__slots__特性来减少内存使用。
摘要由CSDN通过智能技术生成

更多互联网新鲜资讯、工作奇淫技巧关注原创【飞鱼在浪屿】(日更新)


许多大型软件-如Instagram,YouTube和Dropbox Web应用程序-最初都是Python应用程序。由于Python的易用性和高质量的开源库,因此使用Python构建Web应用程序极其容易。

851a4a69f551501e33124e0127956cb2.png

动机

Python带有自动内存管理(带有垃圾回收),使开发人员无需手动处理未分配的对象。这对于更快地交付功能非常有帮助,但是会使应用程序受到内存管理系统和垃圾收集算法的影响。例如,GC暂停在Java等其他托管内存语言中臭名昭著。

速度可能不是Python应用程序的决定性因素,因为它很少用于对性能敏感的应用程序,但是自动内存管理还有其他更微妙的后果。与CPU / IO绑定相比,标准的无状态Python Web服务器(在CPython上运行)通常可能受内存限制。这是因为每个对象都是在堆上分配的,而大型的开源库(例如numpy)仅通过导入在程序中占用约50mb的空间。因此,运行该应用程序的基础架构成本直接与其内存效率-进而与其内存管理紧密相关。这对于其他动态语言(例如PHP和Ruby)也是如此。

一种更有效地运行Python Web服务器的方法是将应用程序的多个进程打包到单个主机(或Pod)上,然后为每个进程设置内存限制(可能通过cgroups设置),以免妨碍其他进程。当进程开始超过其限制时,它会杀死OOM(内存

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值