zoukankan      html  css  js  c++  java
  • python内存泄漏,python垃圾手动回收,1

    部署的舆情系统,内存变大,找原因。

    一个小例子。

    def func():

        local_list = list(range(10000000))

    func()

    time.sleep(200)

    能够观察到,在sleep 200秒的时间内,程序的内存一直是200多M,虽然是函数局部变量,执行后在外部无法使用了,但仍然占据大内存。

    再来一个

    global_list = list(range(10000000))

    del global_list

    time.sleep(200)

    能够观察到,在sleep 200秒的时间内,程序的内存一直也是200多M,引用计数变为0,但仍然占据大内存。

    引入gc模块

    在sleep之前插入 gc.collect()

    查看内存,内存直接下降到10M内了,这是我期待的。

    本篇的list代表一个巨大的内存的变量,以range(10000000)来指代。不要扯上什么xrange  range,我就是要用这个来简单指代一些巨大内存的变量。

    实际过程中指代的是下载 上传巨大的html源码,爬虫过程中如果遇到mp4 avi连接没有过滤,下载了mp4的字符串就会是一个巨大的字符串。

    之前有个地方,给njinx的网关接口上传结果,发现一直被njinx拒绝,请求不成功,而程序中遇到这种情况,一直等待60秒一直重试,导致永远不可能上传,内存永远降不下来。

    下一篇介绍,监控内存和释放内存。

  • 相关阅读:
    C 库函数 ------ qsort()
    递归之美
    C函数库 ------ ctype.h
    scanf 多行输入判断结束
    POSIX库、glibc库、pthreads库、libc库、newlib、uClibc
    Docker 私有仓库搭建
    在daemon.json中配置主机后无法启动docker
    MySQL配置HeartBeat实现心跳监控和浮动IP
    Heartbeat基础知识-运维小结
    (二) Docker中启动镜像
  • 原文地址:https://www.cnblogs.com/ydf0509/p/8053088.html
Copyright © 2011-2022 走看看