获取android MemoryInfo 信息

来源:互联网 发布:淘宝销量如何做到上千 编辑:程序博客网 时间:2024/06/08 15:07

获取android MemoryInfo 信息

 (2012-01-29 16:45:26)
标签: 

android

 

内存泄露

 

杂谈

分类: Android
使用Debug的getMemoryInfo(Debug.MemoryInfo memoryInfo)或ActivityManager的MemoryInfo[] getProcessMemoryInfo(int[] pids)

       该方式得到的MemoryInfo所描述的内存使用情况比较详细.数据的单位是KB.MemoryInfo的Field如下

java代码:
  1. dalvikPrivateDirty: The private dirty pages used by dalvik。
  2. dalvikPss :The proportional set size for dalvik.
  3. dalvikSharedDirty :The shared dirty pages used by dalvik.
  4. nativePrivateDirty :The private dirty pages used by the native heap.
  5. nativePss :The proportional set size for the native heap.
  6. nativeSharedDirty :The shared dirty pages used by the native heap.
  7. otherPrivateDirty :The private dirty pages used by everything else.
  8. otherPss :The proportional set size for everything else.
  9. otherSharedDirty :The shared dirty pages used by everything else.
复制代码

        Android和Linux一样有大量内存在进程之间进程共享。某个进程准确的使用好多内存实际上是很难统计的。
因为有paging out to disk(换页),所以如果你把所有映射到进程的内存相加,它可能大于你的内存的实际物理大小。

        dalvik:是指dalvik所使用的内存。
        native:是被native堆使用的内存。应该指使用C\C++在堆上分配的内存。
        other:是指除dalvik和native使用的内存。但是具体是指什么呢?至少包括在C\C++分配的非堆内存,比如分配在栈上的内存。puzlle!
       private:是指私有的。非共享的。
       share:是指共享的内存。
       PSS:实际使用的物理内存(比例分配共享库占用的内存)
       Pss:它是把共享内存根据一定比例分摊到共享它的各个进程来计算所得到进程使用内存。网上又说是比例分配共享库占用的内存,那么至于这里的共享是否只是库的共享,还是不清楚。
       PrivateDirty:它是指非共享的,又不能换页出去(can not be paged to disk )的内存的大小。比如Linux为了提高分配内存速度而缓冲的小对象,即使你的进程结束,该内存也不会释放掉,它只是又重新回到缓冲中而已。
       SharedDirty:参照PrivateDirty我认为它应该是指共享的,又不能换页出去(can not be paged to disk )的内存的大小。比如Linux为了提高分配内存速度而缓冲的小对象,即使所有共享它的进程结束,该内存也不会释放掉,它只是又重新回到缓冲中而已。
0 0
原创粉丝点击