java

位置:IT落伍者 >> java >> 浏览文章

用java监视系统进程的两个解决方案


发布日期:2022年09月19日
 
用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这个方案还是可行的

               

上一篇:六大代码问题检验你的Java知识

下一篇:Java获取网络主机信息