美文网首页
内存测试

内存测试

作者: KrisGu | 来源:发表于2017-07-04 18:35 被阅读0次

    一、查看内存大小

    查看单个应用程序最大内存限制的方式:

    1.内存数据文件地址: android手机内部 system/build.prop

    adb pull  system/build.prop 本地路径

    打开该文件,查看对应的内存信息

    2.另一种查看方式,使用命令行

    adb shell  getprop | grep heapgrowthlimit

    得到对应的结果

    [dalvik.vm.heapgrowthlimit]: [128m]

    PS:当然adb shell  getprop 还有可以得到其他。build.prop文件中包含的数据应该都可以获取,还没有具体去使用。

    二、查看内存的方式

    adb shell dumpsys meminfo <package-name>

    结果如下:

    看到这个图,其实都不陌生了,但是具体该看什么呢?先简单分析下:

    1.dalvik就是我们平常说的java堆,我们创建的对象是在这里面分配的。

    2.native是被native堆使用的内存。应该指使用C\C++在堆上分配的内存。

    所以我们查看的大小是 dalvik heap(单位为KB,注意换算)不能超过最大限制(heapgrowthlimit)

    另外一些参数含义:

    Naitve Heap Size: 从mallinfo usmblks获得,代表最大总共分配空间

    Native Heap Alloc: 从mallinfo uorblks获得,总共分配空间

    Native Heap Free: 从mallinfo fordblks获得,代表总共剩余空间

    Native Heap Size 约等于Native Heap Alloc + Native Heap Free

    mallinfo是一个C库, mallinfo 函数提供了各种各样的通过C的malloc()函数分配的内存的统计信息。

    Dalvik Heap Size:从Runtime totalMemory()获得,Dalvik Heap总共的内存大小。

    Dalvik Heap Alloc: Runtime totalMemory()-freeMemory() ,Dalvik Heap分配的内存大小。

    Dalvik Heap Free:从Runtime freeMemory()获得,Dalvik Heap剩余的内存大小。

    Dalvik Heap Size 约等于Dalvik  HeapAlloc + Dalvik  Heap Free

    我们关注主要就是 native和dalvik的heap size,通过自动化或手工测试,查看heap size 是否处于一直增长的状态,若一直增长,可能会出现oom的情况。

    结果分析: 可以查看 https://developer.android.com/reference/android/os/Debug.MemoryInfo.html  具体字段意义

    linux系统或者Android 系统内存大多是共享的,所以单独计算使用的内存是特别困难。 

    1.pss:proportional set size  Pss数字是内核计算的衡量内存共享的度量标准,基本上每个页面的RAM都是通过使用该页面的其他进程的数量进行缩放。这样,您可以(理论上)将所有进程中的pss加起来,以查看它们正在使用的总RAM,并比较进程之间的pss,以了解它们的相对权重。

    2.private Dirty:另一个有趣的指标是PrivateDirty,它基本上是不能被分页到磁盘的进程内的RAM量(它不受磁盘上相同的数据支持),并且不与任何其他进程共享。另一种看待这种情况的方法是当该过程消失时(可能很快将其纳入高速缓存和其他用途),RAM将可用于系统。

    3.private Clean: 未找到合适的说明,猜测就属于未使用的私有的磁盘大小

    4.Swapped Dirty:未找到合适的说明,猜测交换的磁盘控件的大小

    三、Memory Monitor

    前提:一定是debug 的包,release的包无法查看

    可参考该文章进行内存泄漏操作查看

    http://www.cnblogs.com/linguanh/p/5601232.html 

    具体可查看https://developer.android.com/studio/profile/am-hprof.html?#hprof-snapshot

    https://developer.android.com/studio/profile/am-allocation.html,英文水平不佳,准备开始翻译

    相关文章

      网友评论

          本文标题:内存测试

          本文链接:https://www.haomeiwen.com/subject/qgzthxtx.html