关于java:使用IntelliJ和Debug在VisualVm中进行分析

Profiling in VisualVm Using IntelliJ with Debug

我想分析由IntelliJ启动的测试应用程序。 对于分析,我使用VisualVm。

我使用参数-J-Dorg.netbeans.profiler.separateConsole=true启动了Java工具。

我使用VM参数-Xverify:none启动了应用程序,否则,如果我开始分析,VisualVM会引发错误(重新定义失败,错误62)

我想在执行任何重要代码之前先对应用程序进行概要分析,因此我尝试设置一个断点并开始在VisualVM中进行性能分析。 问题是当我在断点处等待时,VisualVm无法响应任何交互。 我想念什么吗?

在正常执行(没有调试)的情况下,我的程序等待输入,因此无需调试即可对其进行概要分析。 但是,如果程序没有这样的"等待点"怎么办?

我的测试应用程序如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package my.visualvm.example;

import java.util.Scanner;

public class MainClass {

    public static void main(String[] args) {

        System.out.println("Starting Application:" + MainClass.class.getSimpleName());

        Scanner scanner = new Scanner(System.in);

        while (scanner.hasNext()) {
            double value = scanner.nextDouble();
            if (value == 0d) {
                break;
            }
            System.out.println(Powa.powaPowa(value));
        }

        System.out.println("Stopping Application:" + MainClass.class.getSimpleName());
    }

}

其他类:

1
2
3
4
5
6
7
8
9
10
11
package my.visualvm.example;

final class Powa {

    private Powa() {
    }

    static double powaPowa(double powa) {
        return Math.pow(powa, 2);
    }
}

将断点设置为仅挂起当前线程。
enter image description here