Re: [问题] Java里面执行java -jar看memory usage?

楼主: zephyrhymn   2017-12-25 11:17:03
※ 引述《stenler (挖哈哈思压)》之铭言:
: 如题 最近收到一个题目是
: Monitor另一个 a.jar runtime时的系统资源使用状况 ...
: 前提当然是不能改 a.jar 且 a.jar 是一个 long run process.
: 有没有机会弄一个 类似
: //pseduo code ...
: public class b{
: void main(){
: execute local command("java -jar a.jar") + check
: and system out memory usage every 10 secs;
: }
: }
: 实在想不出有什么比较好的做法 ~"~ ... 也不能用 linux ps去看 ('・ω・')
: 环境上就是一定要透过 java call java 的方式 ... XD
不知道你的环境为何?
单机程还是网络程式?
有办法修改a.jar的程式吗?
根据你的环境不同是有不同的解法啦
这里先不考虑其他方法
就从你说的不可能的方法去处理
1.执行程式并撷取该process的pid
Process proc = Runtime.getRuntime().exec(command);
Field f = proc.getClass().getDeclaredField("pid");
f.setAccessible(true);
int pid = (int) f.get(proc);
2.有了pid之后 我们就可以透过ps去得知该process的相关讯息
Process proc = Runtime.getRuntime().exec("ps -p "
+ pid + " -o %cpu,%mem,vsz,rss,command");
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(proc.getInputStream()));
String str = null;
while ((str = stdInput.readLine()) != null)
{
System.out.println(str);
}
程式码大致如上
最后str会把ps的指令的结果给印出来
不知道这是不是你想要的结果?

Links booklink

Contact Us: admin [ a t ] ucptt.com