录制程序的CPU时间

时间:2013-02-09 14:09:11

标签: java profiler

我想记录我的Java程序所花费的时间。大多数论坛建议如下:

int starttime=System.nanoTime();  
//program code  
int endTime=System.nanoTime();  
int timetaken=starttime-endTime;  

这种方法的问题在于,如果有多个程序在运行,那么endTime和starttime之间的差异不是我的程序所花费的时间。这也是在CPU等中安排不同程序所花费的时间。但是,我只想记录我的程序所花费的时间。我怎么得到这个时间?

1 个答案:

答案 0 :(得分:2)

您可以在article中找到答案。 引用文章:

  

致电ManagementFactory。 getThreadMXBean()获取一个ThreadMXBean   描述了当前的JVM线程。 bean的getCurrentThreadCpuTime()   method返回当前线程的CPU时间。该   getCurrentThreadUserTime()方法返回线程的用户时间。都   这些报告时间以纳秒为单位

如果您的应用程序是多线程的,则需要记录每个应用程序线程的CPU时间并将它们相加以获得应用程序在其所有线程中占用的总CPU时间。

说过 - 如果你真的认真地分析你的cpu消费你可能应该使用一个分析器。你可以从像visualvm这样的免费开源软件开始(也与jdk捆绑在一起),这将很容易地回答这个问题。