下面的过程是执行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;
}
我是新手。我出错了吗?或者我做错了什么? 任何帮助或建议将非常感谢..谢谢。