我有一个在django中运行的小型多线程脚本,随着时间的推移,它开始使用越来越多的内存.离开它一整天吃大约6GB的RAM,我开始交换.
在http://www.lshift.net/blog/2008/11/14/tracing-python-memory-leaks之后,我将其视为最常见的类型(仅使用了800M的内存):
(Pdb) objgraph.show_most_common_types(limit=20)
dict 43065
tuple 28274
function 7335
list 6157
NavigableString 3479
instance 2454
cell 1256
weakref 974
wrapper_descriptor 836
builtin_function_or_method 766
type 742
getset_descriptor 562
module 423
method_descriptor 373
classobj 256
instancemethod 255
member_descriptor 218
property 185
Comment 183
__proxy__ 155
Run Code Online (Sandbox Code Playgroud)
没有表现出任何奇怪的东西.我现在该怎么做才能帮助调试内存问题?
更新:尝试一些人们推荐的东西.我一夜之间运行程序,当我工作时,使用了50%*8G == 4G的RAM.
(Pdb) from pympler import muppy
(Pdb) muppy.print_summary()
types | # objects | total size
========================================== | =========== | ============
unicode | 210997 | 97.64 MB
list | 1547 | …Run Code Online (Sandbox Code Playgroud)