熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

用java監視系統進程的兩個解決方案

2013-11-23 19:18:44  來源: Java核心技術 

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

  解決問題的限制和條件

  》兩個虛擬機運行在同台Windows_X機上

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

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

  解決問題的關鍵

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

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

  解決辦法

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

  使用javaio中的函數

  RuntimegetRuntime()exec(系統命令

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

   Runtime r=RuntimegetRuntime();
Process p=null;
String cmd[]={命令參數};
try{
p=rexec(cmd);
}
catch(Exception e){
Systemoutprintln(error executing: +cmd[]);
}

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

  

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

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

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

  二常規方法使用JNI

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

  

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


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26640.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.