Vorremmo interiorizzare alcune delle funzionalità di JConsole/JVisualVM e raccogliere dati sull'utilizzo della cpu e il consumo di memoria dall'applicazione in esecuzione. Il motivo è che i vincoli di sicurezza ci impediscono di aprire le porte jmx all'esterno su un sistema di produzione.Come determinare l'utilizzo di gc-cpu in un'applicazione?
La maggior parte dei dati richiesti può essere monitorata tramite MXBeans, tuttavia, la quantità di dati utilizzata per la garbage collection non ci sfugge. Il monitoraggio di gc-time tramite GarbageCollectorMXBean
non è utile, in quanto fornisce solo il walltime dei collettori di lavoro paralleli.
Suppongo che sarebbe possibile utilizzare ThreadMXBean per determinare il tempo di elaborazione di tutti i thread gc. Non vedo alcun modo per identificare in modo sicuro quei thread.
Qualcuno sa, come JVisualVM calcola quel numero?