代码之家  ›  专栏  ›  技术社区  ›  bruceatk

如果您有一个Java应用程序,它在不做任何事情的时候却在消耗CPU,那么如何确定它在做什么?

  •  12
  • bruceatk  · 技术社区  · 17 年前


    更新:

    使用JConsole,我能够确定谁在跑步以及他们在做什么。我花了几个小时才弄明白它为什么这么做。最终的问题是,供应商使用的API jar与它使用的数据库配置不完全匹配。默认情况下,在配置稍有不匹配的服务器上启用跟踪和性能监视。我用了一个不同的罐子,一切都很好。

    @畏缩-我用你建议的一些选项做了一些实验。我在安装JProfiler时遇到了一些问题,它看起来不错(但价格昂贵)。接下来,我添加了EclipseProfiler插件,我将查看不同的开源探查器以比较其功能。

    8 回复  |  直到 14 年前
        1
  •  18
  •   Afshin Moazami Darxis    12 年前

    如果您使用的是Java5或更高版本,则可以使用 jconsole 查看所有正在运行的线程。jstack还将进行堆栈转储。我认为即使在像Tomcat这样的容器中,这种方法也应该仍然有效。

    还值得注意的是,从JDK1.6Update7开始,现在有一个名为 VisualVM java.net project ,因此该页面上可能提供其他信息。我还没有用过这个,但它看起来对更严肃的分析有用。

    希望有帮助

        2
  •  7
  •   Ran Biron    17 年前

    面对和我以前一样的问题 YourKit profiler . 除非您实际连接到它,否则它的加载程序不会激活(尽管它会打开一个端口来侦听连接)。分析器本身有一个很好的“获取在每个方法中花费的时间量”,同时在它不那么突兀的模式下工作。

    this article 启发。

        3
  •  3
  •   cringe    17 年前

    如果是为了专业目的,而你又有一些钱可以花,那就试着去弄到手 JProfiler Eclipse Profiler Plugin . 我用了好几次,但我不知道现在的状态。

    eclipse项目本身也提供了一个新的(?)项目: http://www.eclipse.org/tptp/ this article ).从来没用过,所以我不知道是否值得。

    网站上还有一个非常好的开源分析器列表 http://www.manageability.org/blog/stuff/open-source-profilers-for-java

        4
  •  3
  •   Valery Viktorovsky    10 年前

    如果JConsole不能使用,您可以

    • + 打破
    • kill -3 <process id> Linux下

        5
  •  2
  •   Afshin Moazami Darxis    12 年前

    JRockit任务控制延迟分析器。

    JRockit附带的延迟分析器向您展示了JVM在什么都不做的情况下正在“做”什么。在最新版本中,您可以看到以下各项的延迟:

    • Java等待/阻塞/睡眠/驻车。
    • 文件I/O
    • 内存分配
    • JVM延迟,例如代码生成和类加载
    • 螺纹悬挂

    latency analyzer http://blogs.oracle.com/hirt/WindowsLiveWriter/The.0LatencyAnalyserMigratedfromtheoldBE_7246/latency_graph_2.png

    与生产环境不同,许多其他工具的开销可以忽略不计。 这 blog post here .

    它可以免费用于开发!

        6
  •  1
  •   Marcus Downing    17 年前

    是的,它们需要花钱,使用它们有时会有点尴尬,但它们确实为你提供了更多的真实证据,而不是猜测。

    人类普遍不善于猜测性能瓶颈在哪里。这似乎是我们的大脑不适合做的事情。这可能看起来很明显,你可能对问题所在有很好的想法,但现实世界往往是在做一些不同的事情。而优化代码中错误的部分,充其量也意味着要做大量的工作以获得最小的收益。更多的时候,它会使事情变得更慢,有时它会完全破坏事情。因此,在为了优化而进行任何更改之前,您应该 总是 从剖面仪或其他精确工具获得真实证据。

    如前所述,JProfiler和YourKit都相当不错,而且价格也不贵。上次我看的时候,他们都有免费的演示。

        7
  •  0
  •   Boris Terzic    17 年前

    included, free profiler 每天。它比EclipseTPTP插件(上次检查是在3个月前)工作得更好,而且对我们来说,它不再需要像JProfiler这样的商业分析器,它非常优秀,但很快就变得不必要了。

        8
  •  0
  •   svrist    17 年前