我已经将我的Ubuntu升级到了16.04,并且随之将Python 3.4升级到新版本的Python 3.5。
我运行了我的python代码而且我已经麻木了。它使用的内存比以前多1.5倍-2倍。相同的代码!
计算下面内存探查器列表的对象:
=== Python 3.5 ===============================================
types | # objects | total size
================================= | =========== | ============
<class 'dict | 3526 | 2.93 MB
<class 'str | 24322 | 2.70 MB
<class 'type | 1255 | 1.22 MB
<class 'code | 8240 | 1.13 MB
<class 'tuple | 3257 | 215.20 KB
<class 'set | 566 | 203.81 KB
<class 'list | 1356 | 179.02 KB
<class 'builtin_function_or_method| 2356 | 165.66 KB
<class 'weakref | 2005 | 156.64 KB
<class 'wrapper_descriptor | 1278 | 99.84 KB
<class 'int | 3488 | 96.62 KB
function (__init__) | 650 | 86.33 KB
<class 'method_descriptor | 1212 | 85.22 KB
<class 'getset_descriptor | 1179 | 82.90 KB
<class 'abc.ABCMeta | 70 | 66.92 KB
=== Python 3.4 ===============================================
types | # objects | total size
================================= | =========== | ============
<class 'dict | 2306 | 2.12 MB
<class 'str | 16819 | 1.90 MB
<class 'type | 865 | 824.64 KB
<class 'code | 5586 | 785.75 KB
<class 'set | 390 | 159.81 KB
<class 'tuple | 2206 | 147.46 KB
<class 'builtin_function_or_method| 2170 | 135.62 KB
<class 'weakref | 1444 | 112.81 KB
<class 'list | 717 | 97.89 KB
<class 'wrapper_descriptor | 1220 | 95.31 KB
<class 'int | 2753 | 75.85 KB
<class 'method_descriptor | 1067 | 75.02 KB
<class 'getset_descriptor | 799 | 56.18 KB
function (__init__) | 399 | 52.99 KB
<class 'abc.ABCMeta | 46 | 42.16 KB
==============================================================
我想提醒一下 - 相同的代码给出了不同的结果。
为什么会这样?请帮忙。提前谢谢。
答案 0 :(得分:0)
我发现了问题。这是pycurl或libcurl库或两者中的内存泄漏。我的应用占用了比以前多2倍-3倍的内存。
当我将这些库的新版本替换为旧版本时,应用程序返回到之前的内存使用情况。
但是,由于新实现的功能,Python 3.5使用的内存比Python 3.4高10%。这很正常。
感谢。