有 Java 编程相关的问题?

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

性能如何查看我的Java进程现在正在做什么?

我有一个应用程序服务器进程,它的CPU一直保持在100%。我所说的持续时间是指数小时,甚至数天

我知道如何生成堆/线程转储,但我正在寻找更多动态信息。我想知道是什么在使用这么多的CPU。有数十个(或可能100多个)线程。我知道这些线程是什么,但我需要知道它们中的哪些占用了我这么多的CPU

我如何获得这些信息


共 (3) 个答案

  1. # 1 楼答案

    使用探查器。Oracle JDK附带的VisualVM中包含一个

    高级商业版(提供试用许可证)是YourKit

  2. # 2 楼答案

    我个人用YourKit来做这个

    VisualVM也有一些分析功能,但我没有使用它们

  3. # 3 楼答案

    通过创建线程转储。可以使用jstack连接到正在运行的java进程以获取线程转储。如果在一段时间内出现两个或更多线程转储,可以通过分析它们来确定哪些线程正在积极使用CPU。通常,处于运行状态的线程是您需要关注的线程