我正在尝试构建一个系统,该系统在 JVM 进程上定期进行线程转储,以便以后在出现问题时可以对其进行分析。我打算在进行线程转储时将 JVM 的开销降至最低。获取线程转储的方法有多种,我最终列出了 2 个选项 - 构建自定义 JVMTI 代理或使用 ThreadMXBean。我想知道是否有人对哪种方法会导致 JVM 开销最少进行了分析?或者它们会导致相同的开销吗?
最佳答案
这在一定程度上取决于您所需的采样频率,但在大多数情况下,它会产生一些影响,并且结果会有偏差。如果您准备使用 JVMTI,那么一定要看看 Honest Profiler:https://github.com/RichardWarburton/honest-profiler
关于java - 在 JVM 上进行定期线程转储 - ThreadMXBean 与 JVMTI 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41061764/