Re: [問題] Java裡面執行java -jar看memory usage?

看板java作者 (是)時間7年前 (2017/12/25 11:17), 7年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《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的指令的結果給印出來 不知道這是不是你想要的結果? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.96.116.21 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1514171827.A.F73.html ※ 編輯: zephyrhymn (140.96.116.21), 12/25/2017 11:30:50
文章代碼(AID): #1QG6spzp (java)
文章代碼(AID): #1QG6spzp (java)