meliae内存分析-基本用法
python的内存分析工具meliae,挺好用的.
示例
1.记录程序的内存使用信息
import time # 此处是可能发生内存泄露的地方 def main(): pass if __name__ == '__main__': # 通过循环执行,将泄露的内存积累放大 while True: main() time.sleep(10) # 记录每次执行完后占用的内存 from meliae import scanner scanner.dump_all_objects('mem_dump%s' % time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
2.查看占用的内存大小
from meliae import loader om = loader.load('mem_dump2014-02-2022-34-43') om.summarize()
具体分析引用关系太麻烦,以上是个人喜欢的方法:
用循环将泄露的内存累积放大. 然后记录每次执行完后占用的内存.
查看占用内存大小. 再比较每次的内存大小,即可知道是否发生泄露.
至于内存泄露的地方,则用排除法,重复上述过程,定位泄露地点.
基本用法
- 获取进程的内存信息
import time from meliae import scanner scanner.dump_all_objects('mem_dump%s' % time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
- 查看占用内存
from meliae import loader #加载dump文件 om = loader.load('mem_dump2014-02-2022-34-43') #分析内存占用情况 om.summarize()
- 输出样例
Total 40335 objects, 125 types, Total size = 6.5MiB (6768944 bytes) Index Count % Size % Cum Max Kind 0 1245 3 1792824 26 26 98584 dict 1 18560 46 1568824 23 49 12479 str 2 226 0 730272 10 60 12624 module 3 559 1 505336 7 67 904 type 4 3573 8 457344 6 74 128 code 5 3759 9 451080 6 81 120 function 6 2506 6 189840 2 84 576 tuple 7 1383 3 163768 2 86 4280 list 8 1303 3 104240 1 88 80 wrapper_descriptor 9 895 2 78760 1 89 88 weakref 10 942 2 67824 1 90 72 builtin_function_or_method 11 198 0 66928 0 91 8424 set 12 388 0 65136 0 92 1552 unicode 13 807 2 58104 0 93 72 method_descriptor 14 50 0 56000 0 93 1120 OracleDB 15 1680 4 40320 0 94 24 int 16 36 0 36768 0 95 1192 StgDict 17 446 1 32112 0 95 72 getset_descriptor 18 87 0 29928 0 95 344 WeakSet 19 395 0 28440 0 96 72 member_descriptor
字段说明
Index : 行索引号
Count : 该类型的对象总数
%(Count) : 该类型的对象总数 占 所有类型的对象总数 的百分比
Size : 该类型的对象总字节数
%(Size) : 该类型的对象总字节数 占 所有类型的对象总字节数 的百分比
Cum : 累积行索引后的%(Size)
Max : 该类型的对象中,最大者的字节数
Kind : 类型
- 对象及引用关系
个人不喜欢用这个
#得到所有的OracleDB对象 p = om.get_all('OracleDB') #查看第一个对象 p[0] #可以查看该对象的所有引用 p[0].c #查看谁引用了这个对象 p[0].p
2023年8月04日 07:06
Hi everyone, I really love your story. You have very useful information; I am from Imamia Quran Academy. Online ahle tashi Madrasa has enabled students to grasp and learn Quran knowledge via one click. It includes the basic beliefs of the Shias, the history of Islam, Nahj al-Balagha (which contains the sermons of Hazrat Ali a.s), and the prayers of other imams such as the book of supplications of Hazrat Imam Sajjad a.s, (Sahifa Sajjadiya).