Python 程序内存占用越来越大,有没有办法直接查看对象数目,而不修改代码呢?

2017-04-12 10:30:54 +08:00
 whx20202

在网上看了几个内存泄露分析工具,都要 import 什么,或者加一个装饰器

有没有那种直接在系统里运行,就能检测别的 python 进程内存使用情况的工具?

4608 次点击
所在节点    Python
12 条回复
carlonelong
2017-04-12 10:38:31 +08:00
在系统里运行,你是说一个单独的 binary 文件?
whx20202
2017-04-12 10:44:10 +08:00
@carlonelong 也可以是别的 python 文件什么的,暂时没法重启那个 内存泄露的服务,更别说改代码了
Mirana
2017-04-12 11:04:11 +08:00
trent0806
2017-04-12 11:07:33 +08:00
应该是有吧
ProjectAmber
2017-04-12 11:12:10 +08:00
https://gist.github.com/simonw/8aa492e59265c1a021f5c5618f9e6b12
这里提到了一种向运行中的 Python 程序关联 shell 的方法,不确定是否对解决这一问题有帮助。
janxin
2017-04-12 11:21:07 +08:00
systemtap 是一个好方法,但是需要编译 Python 的时候把一些点提前埋进去。我记得 CentOS 默认的 Python 是带的,可以直接用。其他系统 Python 需要自己打 patch 。

3.6 之后编译加参数就行了。
VYSE
2017-04-12 11:28:01 +08:00
pyrasite-shell 或 flask 提供一个看 memory 的接口就可以
gouchaoer
2017-04-12 11:29:39 +08:00
检查内存泄漏很麻烦的,命令行程序的话你定时重启就完了
janxin
2017-04-12 11:30:45 +08:00
https://github.com/emfree/systemtap-python-tools 脚本看 scripts/memtrace.stp 就可以了
ryanzyy
2017-04-12 16:32:41 +08:00
看对象的数目是没有用的
Leak 的对象在 python 里是看不见的
sagaxu
2017-04-12 17:15:55 +08:00
这个时候就知道 Java 的好了,哈哈
Damnever
2017-04-15 11:06:43 +08:00
可以借助 pyrasite

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/354269

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX