Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 录制程序';s的CPU时间_Java_Profiler - Fatal编程技术网

Java 录制程序';s的CPU时间

Java 录制程序';s的CPU时间,java,profiler,Java,Profiler,我想记录我的Java程序所用的时间。大多数论坛建议如下: int starttime=System.nanoTime(); //program code int endTime=System.nanoTime(); int timetaken=starttime-endTime; 这种方法的问题是,如果有多个程序在运行,那么endTime和starttime之间的差异不是我的程序所花费的时间。它也是在CPU中调度不同程序所花费的时间。然而,我只对记录我的程序所花费的时间感兴趣。

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

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

这种方法的问题是,如果有多个程序在运行,那么endTime和starttime之间的差异不是我的程序所花费的时间。它也是在CPU中调度不同程序所花费的时间。然而,我只对记录我的程序所花费的时间感兴趣。这次我该怎么办?

你可以在这里找到答案。 引自文章:

呼叫管理工厂 . getThreadMXBean()以获取 描述当前的JVM线程。bean的getCurrentThreadCpuTime() 方法返回当前线程的CPU时间。这个 getCurrentThreadUserTime()方法返回线程的用户时间。二者都 以纳秒为单位的报告时间

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


话虽如此,如果你真的很想分析你的cpu消耗,你可能应该使用一个分析器。您可以从一个免费的开源软件开始,比如(也与jdk捆绑在一起),它将(除其他外)非常容易地回答这个问题。

您需要一个分析器。请看这里: