【问题标题】:Is VisualVM instrumenting bytecode?VisualVM 是否在检测字节码?
【发布时间】:2020-07-18 09:06:16
【问题描述】:

我有点困惑:AFAIK VisualVM 执行分析和采样,这是否意味着它不仅可以进行转储(线程堆栈 + 内存状态),还可以检测代码?

从这里:https://stackoverflow.com/a/12130149/10894456 解释了分析意味着检测。但是 VisualVM 是自己进行检测还是需要准备一些东西(比如 Java 代理或其他东西)?

【问题讨论】:

    标签: profiling instrumentation visualvm jvisualvm


    【解决方案1】:

    是的,当您使用 Profiler 时,VisualVM 将根据需要检测字节码。这只能通过代理来完成,因此 VisualVM 包含这样一个 Java 代理。当您连接到同一台机器上的 JVM 时,它可能会使用 Attach APIload the Agent into the target JVM dynamically。所以在这个用例中,用户端不需要额外的准备步骤。

    【讨论】:

    • clear,那么 VisualVM 是如何知道我要检查程序的哪一部分的呢?还是检测每个对象、每个方法?
    • 它不是检测对象,而是(类的)方法。右上角有一个“设置”复选框。当它被切换时,过滤器设置是可见的。所有匹配包含过滤器或不匹配排除过滤器的类都将被检测。这确实可以是很多东西。这就是为什么采样器可以更快地获得第一个结果,但总体开销也更少。我大部分时间都使用采样器。
    猜你喜欢
    • 2021-05-17
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2013-04-05
    • 2022-01-24
    • 1970-01-01
    相关资源
    最近更新 更多