如何找出哪种方法需要花费很多时间?

时间:2011-02-28 07:44:34

标签: java debugging time profiling

我的一个组件是花费太多时间来执行。它调用了许多服务,而这些服务又调用了许多dao方法。现在,有没有办法让它所调用的每种方法都花费时间 我不想在每种方法之前和之后写System.currentmillis来计算因为方法太多而花费的时间 我想我可能需要使用拦截器,或者可能是任何探查器都可以做到这一点。我不确定,请帮忙。

3 个答案:

答案 0 :(得分:8)

使用JDK附带的jvisualvm(如果我没记错的话)。它是您的JVM的GUI,并且具有非常好的功能。看看它的features还有一些截图......

您可以按照以下步骤将其集成为eclipse中的启动器 Steps to integrate in eclipse

答案 1 :(得分:1)

您可以在NetBeans IDE中使用Java Profiler。

看看这里:http://netbeans.org/features/java/profiler.html

Java VisualVM是另一种选择:http://java.net/projects/visualvm/content/。您可以将它附加到任何正在运行的Java程序,包括您通过Eclipse启动的程序。

答案 2 :(得分:1)

不要把它看作是衡量问题的时间。

使用它的缓慢来暴露它。 只需使用与无限循环相同的方法。

也就是说,在它慢的时候暂停几次,每次检查每个线程的调用堆栈。 有罪的方法和代码行将出现在多个样本上。 查看last paragraph of this post

Here's more on how it works.