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