我们想内部化JConsole/JVisualVM的一些功能,并从正在运行的应用程序中收集有关cpu利用率和内存消耗的数据。原因是,安全限制使我们无法在生产系统上将jmx端口打开到外部。如何确定应用程序内的gc-cpu利用率?
大部分所需的数据都可以通过MXBeans进行监控,但是,用于垃圾收集的cputime仍然不见了。通过GarbageCollectorMXBean
监测gc时间并不有用,因为它仅提供并行工作收集器的壁挂时间。
我认为可以使用ThreadMXBean来确定所有gc线程的cputime。我看不到安全识别这些线程的方法。
有谁知道,JVisualVM如何计算这个数字?