1、改源码重新编译打印相关信息
obmalloc.c 文件中打印 maxarenas,值为当前环境分配 arena 个数;分配 arena 时并没有马上分配对应的pools,故对于每一个 arena,nfreepools 和 ntotalpools 为分配pool的可用pool数和总pool数。
int arena_len = 0;int _nfreepools =0;int _ntotalpools = 0;inti;for(i =0; i
arena_len++;
_nfreepools+=arenas[i].nfreepools ;
_ntotalpools+=arenas[i].ntotalpools ;
}
主要是这些信息:maxarenas 表示已分配arena个数,_ntotalpools 表示已分配pool个数(内存池容量为 _ntotalpools *4KB,每个pool为4KB)。
2、guppy
需要安装,
hp = guppy.hpy()
hp.heap()
可查看当前python环境变量使用内存情况(包括内存池和非内存池的)。
详细用法还有很多,可参考:
3、psutil
获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。
详细可参考:
4、pympler
5、pdb+objgaph