python 内存分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 内存分析相关的知识,希望对你有一定的参考价值。

 

 

1、改源码重新编译打印相关信息

obmalloc.c 文件中打印 maxarenas,值为当前环境分配 arena 个数;分配 arena 时并没有马上分配对应的pools,故对于每一个 arena,nfreepools 和 ntotalpools 为分配pool的可用pool数和总pool数。

int arena_len = 0;
int _nfreepools =0 ;
int _ntotalpools = 0;
int i;
for(i =0; i<maxarenas;++i){
    if(arenas[i].address == 0)
        continue;
    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环境变量使用内存情况(包括内存池和非内存池的)。

技术分享

详细用法还有很多,可参考:

 http://smira.ru/wp-content/uploads/2011/08/heapy.html


 

3、psutil

 获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。

技术分享

详细可参考:

http://www.cnblogs.com/liu-yao/p/5678157.html

 


以上是关于python 内存分析的主要内容,如果未能解决你的问题,请参考以下文章

变量的内存分析图

Android 插件化VirtualApp 源码分析 ( 目前的 API 现状 | 安装应用源码分析 | 安装按钮执行的操作 | 返回到 HomeActivity 执行的操作 )(代码片段

一行代码搞定 Python 逐行内存消耗分析

8.5K Star! Python 代码内存分析的利器

C 中的共享内存代码片段

14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段