我的一个组件执行时间太长了。它调用了很多服务,而这些服务又调用了许多数据访问对象方法。现在,有没有办法获得它调用的每个方法所花费的时间?
我不想在每个方法之前和之后写上 System.currentmillis
来计算所需的时间,因为方法太多了。
我认为我可能需要使用拦截器或者任何分析工具可以做到这一点。我不确定,求助。
我的一个组件执行时间太长了。它调用了很多服务,而这些服务又调用了许多数据访问对象方法。现在,有没有办法获得它调用的每个方法所花费的时间?
我不想在每个方法之前和之后写上 System.currentmillis
来计算所需的时间,因为方法太多了。
我认为我可能需要使用拦截器或者任何分析工具可以做到这一点。我不确定,求助。
jvisualvm
。它是您的JVM的GUI,具有非常好的功能。查看其 功能,还有一些屏幕截图...您可以在NetBeans IDE中使用Java Profiler。
请看这里:http://netbeans.org/features/java/profiler.html
Java VisualVM是另一个选择:http://java.net/projects/visualvm/content/。您可以将其连接到任何正在运行的Java程序,包括通过Eclipse启动的程序。
不要把它看作是测量时间来找问题。
利用它的缓慢来暴露它。 只需使用与无限循环相同的方法。
也就是说,在它变慢时暂停几次,每次检查每个线程的调用堆栈。 有罪的方法和代码行将出现在多个样本中。 请参阅本帖子的最后一段。