程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 使用Java來監視系統進程的兩個解決方案

使用Java來監視系統進程的兩個解決方案

編輯:JAVA編程入門知識

  用第一個Java虛擬機啟動另一個虛擬機,並用第一個虛擬機的java程序去測試另一個虛擬機上java程序運行時的內存,CPU資源占用情況。

  解決問題的限制和條件:

  1》兩個虛擬機運行在同台Windows_X86機上。

  2》只需要知道第二個虛擬機上運行程序時,第二個虛擬機的內存、CPU使用情況。

  3》目的是:測試不同的程序在同個虛擬機上資源使用差別。

  解決問題的要害:

  第一 如何啟動另一虛擬機運行測試的java程序。

  第二 如何用第一個虛擬機裡的java程序,監視另一個虛擬機與其相關進程的運行情況。

  解決辦法:

  一、使用java.io中的函數(命令試過沒問題,程序請按下面提示完成)

  使用java.io中的函數

  Runtime.getRuntime()。exec("系統命令");

  這裡我給一個帶命令參數的例子

  

Runtime r=Runtime.getRuntime();
Process p=null;
String cmd[]={"命令","參數"};
try{ 
p=r.exec(cmd);
}
catch(Exception e){
System.out.println("error executing: "+cmd[0]);
}

  這裡要使用到的系統命令有幾個:

  path/java file

  用第二個jvm(path為第二個jre/bin/地址)運行java程序file

  tasklist > log.txt

  將當前系統進程寫以“任務治理器”的格式()寫入log.txt文件中,關於tasklist使用細節,如查詢某個進程ID的信息可以使用命令 >tasklist /? 進行查詢

  這兩步均在第一個虛擬機完成,簡單!!!

  二、常規方法使用JNI

  這裡我給一套解決方案,網上有很多相關代碼,自己去找找;

  

  這套方案也可以實現,這裡我使用簡單的實現方法用C#來做監控,但這這個方案明顯有其不足之處;就是測試對象的JNI接口會被觸發,當然,假如不要求數據的准確性,單從比較的角度去看,只要運行的沒有本身沒有使用到JNI這個方案還是可行的。


 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved