Quiero filtrar qué clases están siendo perfiladas por CPU en Java VisualVm (Versión 1.7.0 b110325). Para esto, intenté en Profiler -> Configuración -> Configuración de CPU para establecer "Profile only classes" en mi paquete bajo prueba, que no tuvo ningún efecto. Luego traté de deshacerme de todas las clases java. * Y sun. * Configurándolas en "No perfil clases", que tampoco tuvieron ningún efecto.¿Las clases de filtrado para el perfil de CPU funcionan en Java VisualVM?
¿Es esto simplemente un error? ¿O me estoy perdiendo algo? ¿Hay alguna solución? Quiero decir que no sea:
- pagar por un perfilador mejor
- hacer un muestreo con la mano (ver One could use a profiler, but why not just halt the program?)
- cambie a la vista de llamadas en árbol, que no es bueno ya que sólo la vista Profiler me da los porcentajes de la CPU consumida por método.
Quiero hacer esto principalmente para obtener porcentajes correctos a medias de la CPU consumida por método. Para esto, necesito deshacerme de las mediciones molestas, p. para sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run()
(alrededor del 70%). Muchos usuarios parecen tener este problema, ver p.
- Java VisualVM giving bizarre results for CPU profiling - Has anyone else run into this?
- rmi.transport.tcp.tcptransport Connectionhandler consumes much CPU
- Can't see my own application methods in Java VisualVM.
¿Es su propósito hacer que el código se ejecute lo más rápido posible? o solo para obtener algunos porcentajes, independientemente de lo que signifiquen? El "tiempo" como se usa comúnmente es muy ambiguo. –
Sí, mi objetivo principal es hacer que el código se ejecute más rápido. También me gustaría tener una estimación de cuánto debería cambiar el código. Así que quiero obtener una visión general aproximada de todos los puntos conflictivos y su gravedad. Creo que los resultados de VisualVm serían aceptables para esto a pesar de usar el tiempo de pared, si tan solo las pocas clases de sun. * Y java. * No estropearan todas las estadísticas. – DaveFar