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