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

一个小例子。

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秒一直重试,导致永远不可能上传,内存永远降不下来。

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

python内存泄漏,python垃圾手动回收,1的更多相关文章

  1. Python 内存管理与垃圾回收

    Python 内存管理与垃圾回收 参考文献:https://pythonav.com/wiki/detail/6/88/ 引用计数器为主标记清除和分代回收为辅 + 缓存机制 1.1 大管家refcha ...

  2. 填坑总结:python内存泄漏排查小技巧

    摘要:最近服务遇到了内存泄漏问题,运维同学紧急呼叫解决,于是在解决问题之余也系统记录了下内存泄漏问题的常见解决思路. 本文分享自华为云社区<python内存泄漏排查小技巧>,作者:luti ...

  3. 【原创】python内存泄漏以及python flask框架莫名coredump

    1.python内存泄漏 今天在看服务器上的进程时,用top查的时候,发现一个一直跑的脚本程序内存竟然达到了1.6G,这个脚本我有印象,一开始仅占用20M左右,显然是内存泄漏了. 用gc和objgra ...

  4. python内存机制与垃圾回收、调优手段

    目录 一.python的内存机制 二.python的垃圾回收 1. 引用计数 1.1 原理: 1.2 优缺点: 1.4 两种情况: 2. 标记清除 2.1 原理: 2.2 优缺点: 3. 分代回收 3 ...

  5. Python内存管理:垃圾回收

    http://blog.csdn.net/pipisorry/article/details/39647931 Python GC主要使用引用计数(reference counting)来跟踪和回收垃 ...

  6. python内存管理及垃圾回收

    一.python的内存管理 python内部将所有类型分成两种,一种由单个元素组成,一种由多个元素组成.利用不同结构体进行区分 /* Nothing is actually declared to b ...

  7. python 内存泄漏调试

    Python应用程序内存泄漏的调试 Quake Lee quakelee@geekcn.org 新浪网技术(中国)有限公司 Sina Research & Development Python ...

  8. [Lua]内存泄漏与垃圾回收

    参考链接: http://colen.iteye.com/blog/578146 一.内存泄漏的检测 Lua的垃圾回收是自动进行的,但是我们可以collectgarbage方法进行手动回收.colle ...

  9. Java的内存泄漏和垃圾回收机制

    JAVA会产生内存泄露吗?首先,答案是肯定的. Java尽管有垃圾回收器,但依旧存在泄漏. Java内存泄漏跟C/C++内存泄漏的概念不一样:C/C++的内存泄漏是指Malloc了一些资源.最后没有f ...

  10. 一次python 内存泄漏解决过程

    最近工作中慢慢开始用python协程相关的东西,所以用到了一些相关模块,如aiohttp, aiomysql, aioredis等,用的过程中也碰到的很多问题,这里整理了一次内存泄漏的问题 通常我们写 ...

随机推荐

  1. GIT——总结.1-

    创建版本库 时光机穿梭 版本回退 工作区和暂存区 管理修改 撤销修改 删除文件 Git Git是目前世界上最先进的分布式版本控制系统(没有之一) Git是分布式版本控制系统 首先,分布式版本控制系统根 ...

  2. [开发笔记]-初学WPF之自学笔记

    一:动态加载背景图片 代码: 在窗体加载时,Window_Loaded 方法中: #region 测试动态加载背景图片 /* 1.图片右键 属性: 复制到输出目录:选择“如果较新则复制” 生成操作选择 ...

  3. Could not read symbols解决方法

    Could not read symbols 陈运文 Could not read symbols:Linux/UNIX系统下编译时,常见的一类报错信息. 通常情况下,该编译报错信息之前会给出出现错误 ...

  4. TiDB 源码阅读系列文章(一)序

    原创: 申砾 PingCAP  2018-02-28 在 TiDB DevCon2018 上,我们对外宣布了 TiDB 源码阅读分享活动,承诺对外发布一系列文章以及视频帮助大家理解 TiDB 源码.大 ...

  5. HashSet与TreeSet 区别

    HashSetHashSet有以下特点 不能保证元素的排列顺序,顺序有可能发生变化 不是同步的 集合元素可以是null,但只能放入一个null当向HashSet集合中存入一个元素时,HashSe ...

  6. visual studio 2015 2017 key vs2015 vs2017密钥

    Visual Studio Professional 2015简体中文版(专业版) KEY:HMGNV-WCYXV-X7G9W-YCX63-B98R2 Visual Studio Enterprise ...

  7. 看见- 柴静-kindle书摘

    笔记本导出 看见 柴静 序 言 标注(黄色) - 位置 3 关心新闻中的人—— 标注(黄色) - 位置 36 二〇〇〇年,我还是湖南卫视“新青年”主持人, 第一章 / 别当了主持人就不是人了 标注(黄 ...

  8. Tomcat server.xml 配置虚拟目录

    对于Tomcat,打开..\Tomcat 6.0\conf\server.xml文件,找到下面的一行代码(Host)然后在这一行之间下面添加配置代码:<Context path="&q ...

  9. (笔记)Mysql命令drop database:删除数据库

    drop命令用于删除数据库. drop命令格式:drop database <数据库名>; 例如,删除名为 xhkdb的数据库:mysql> drop database xhkdb; ...

  10. Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.【转】

    今天碰到了一个查询异常问题,上网查了一下,感谢原创和译者 如果你使用的数据库连接类是 the Data Access Application Blocks "SqlHelper" ...