2

下面的过程正在执行一个c++代码。我想知道c++代码使用的内存。

ProcessBuilder p = new ProcessBuilder("./" + compiledFile);
Process pp = p.start();
long id = getProcessID(pp);
Sigar sigar=new Sigar();
ProcMem memory=new ProcMem();
memory.gather(sigar, id);
System.out.println("memory ---> "+Long.toString(memory.getSize()));

我已经尝试了以下代码。但它返回 sigar 异常:“没有这样的过程”。要获取进程ID,我使用以下方法

public long getProcessID(Process p)
    {
        long pid = -1;
        try
        {
            if (p.getClass().getName().equals("java.lang.UNIXProcess")) 
            {
                Field f = p.getClass().getDeclaredField("pid");
                f.setAccessible(true);
                result = f.getLong(p);
                f.setAccessible(false);
            }
        }
        catch(Exception ex)
        {
            pid = -1;
        }
        return pid;
    }

我是新手,是不是搞错了?还是我做错了什么?任何帮助或建议将不胜感激..谢谢。

4

1 回答 1

0

你看过这门课吗?它一点也不优雅,但似乎是你想做的一个例子。

于 2017-06-09T17:17:22.447 回答