开发者社区> 问答> 正文

怎样取子进程的内存使用情况

在linux系统上用C语言如何取得fork出来的子进程的内存使用情况?
我尝试过getrusage函数,但是好像都不是期望的数值

展开
收起
a123456678 2016-06-03 17:05:24 1717 0
2 条回答
写回答
取消 提交回答
  • fork出来应该能获取到子进程Id,然后进/proc读取对应进程的相关信息

    2019-07-17 19:26:53
    赞同 展开评论 打赏
  • ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
    MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
    activityManager.getMemoryInfo(memoryInfo);

    Log.i(TAG, " memoryInfo.availMem " + memoryInfo.availMem + "n" );
    Log.i(TAG, " memoryInfo.lowMemory " + memoryInfo.lowMemory + "n" );
    Log.i(TAG, " memoryInfo.threshold " + memoryInfo.threshold + "n" );

    List runningAppProcesses = activityManager.getRunningAppProcesses();

    Map pidMap = new TreeMap();
    for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcesses)
    {

    pidMap.put(runningAppProcessInfo.pid, runningAppProcessInfo.processName);

    }
    Collection keys = pidMap.keySet();

    for(int key : keys)
    {

    int pids[] = new int[1];
    pids[0] = key;
    android.os.Debug.MemoryInfo[] memoryInfoArray = activityManager.getProcessMemoryInfo(pids);
    for(android.os.Debug.MemoryInfo pidMemoryInfo: memoryInfoArray)
    {
        Log.i(TAG, String.format("** MEMINFO in pid %d [%s] **\n",pids[0],pidMap.get(pids[0])));
        Log.i(TAG, " pidMemoryInfo.getTotalPrivateDirty(): " + pidMemoryInfo.getTotalPrivateDirty() + "\n");
        Log.i(TAG, " pidMemoryInfo.getTotalPss(): " + pidMemoryInfo.getTotalPss() + "\n");
        Log.i(TAG, " pidMemoryInfo.getTotalSharedDirty(): " + pidMemoryInfo.getTotalSharedDirty() + "\n");
    }

    }

    2019-07-17 19:26:53
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
云服务器ECS内存增强型实例re6全新发布 立即下载
服务上云加速大家居产业C2M进程 立即下载
内存取证与IaaS云平台恶意行 为的安全监控 立即下载

相关实验场景

更多