我正在尝试构建一个在JVM进程上定期进行线程转储的系统,以便以后可以在出现问题时进行分析。我打算在进行线程转储时对JVM造成最小的开销。有多种方式可以进行线程转储,最后我列出了两个选项 - 构建自定义JVMTI代理或使用ThreadMXBean。我想知道有人已经分析了哪种方法会导致最小的JVM开销?或者它们会导致相同的开销吗?
答案 0 :(得分:1)
取决于您所需的采样频率,但在大多数情况下,它会产生一些影响,结果会有偏差。如果您正在寻找JVMTI,请务必查看Honest Profiler:https://github.com/RichardWarburton/honest-profiler