有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何找出哪个方法花费了很多时间?

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


共 (3) 个答案

  1. # 1 楼答案

    不要把它看作是测量时间来发现问题

    利用它的缓慢来暴露它。 如果它是一个无限循环,就使用同样的方法

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

    Here's more on how it works.

  2. # 3 楼答案

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

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