android中进程的内存信息

android中进程的内存信息,android,Android,我试图计算android中单个进程所使用的内存,因为我在这一点上陷入了困境 ActivityManager am=(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); android.os.Debug.MemoryInfo[] mem=am.getProcessMemoryInfo(ProcessId); 从上面的“记忆信息”中我应该考虑什么? {mem.getTotalPss() or mem.getTotalPrivate

我试图计算android中单个进程所使用的内存,因为我在这一点上陷入了困境

ActivityManager am=(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
android.os.Debug.MemoryInfo[] mem=am.getProcessMemoryInfo(ProcessId);

从上面的“记忆信息”中我应该考虑什么?

{mem.getTotalPss() or mem.getTotalPrivateDirty() or mem.getTotalSharedDirty()}
获取进程使用的RAM数量

请帮我做这个。提前谢谢

  • 简单回答:这很复杂,你可能不想这么做
  • 长答覆:

  • mem.getTotalPss()提供该进程占用的总内存(Kb)

    从棉花糖开始,在MemoryInfo中有一些辅助函数可以查询。它还可以给你一个解析(和额外)信息的列表

    请注意,至少在s6 summary.graphics上,所有内容都始终为0。如果一个进程不是art/dalvik android进程,那么它只会在所有返回字符串上给出0。但它会将它们返回到此地图

        int  pids[] =new int[1];
        pids[0]= pID;
        Debug.MemoryInfo [] mems1= am.getProcessMemoryInfo(pids);
    
        if(Build.VERSION.SDK_INT >= 23)
        if(mems1.length==1) {
    
            Debug.MemoryInfo meminfo=new Debug.MemoryInfo();
    
            Map<String, String> mems = mems1[0].getMemoryStats();
    
            for (Map.Entry<String, String> entry : mems.entrySet())
            {
                ret+=" k: "+entry.getKey()+":"+entry.getValue();
              //  addLineToSb(di, "m23: "+entry.getKey() + ":"+entry.getValue()+"kB");
    
            }
    
    
        }
    
    intpids[]=newint[1];
    pID[0]=pID;
    Debug.MemoryInfo[]mems1=am.getProcessMemoryInfo(pids);
    如果(Build.VERSION.SDK_INT>=23)
    if(mems1.length==1){
    Debug.MemoryInfo meminfo=new Debug.MemoryInfo();
    Map mems=mems1[0]。getMemoryStats();
    对于(Map.Entry:mems.entrySet())
    {
    ret++=“k:”+entry.getKey()+”:“+entry.getValue();
    //addLineToSb(di,“m23:+entry.getKey()+”:“+entry.getValue()+”kB”);
    }
    }