我制作了一个类似于以下代码的Java程序:
class class1{
public static void main(String []args){
for(int i=0;i<100;i++){
class2 c2 = new class2();
c2.start();
}
}
}
class class2 extends Thread{
public void run(){
// do some long job here
}
}
此程序使用运行了大量时间的线程。我想分析程序所花费的时间和内存,以便进一步优化它。但是像这样计算时间的经典方法并不能完成所需的工作:
long startTime = System.currentTimeMillis();
doReallyLongThing();
long endTime = System.currentTimeMillis();
System.out.println("Time taken : " + (endTime - startTime) + " milliseconds");
因为class1在线程完成工作之前完成了工作。所以我想要一个命令行解决方案来获取执行时间。像使用标志作为命令行参数的东西。内存计算也一样。我发现 jconsole 命令有助于分析java程序的各个方面,但是它在单独的终端中打开,对于我正在寻找的目的而言并不是那么好。