En el perfil de Java, parece que todos los caminos (libres) actuales conducen al perfilador de VisualVM incluido con JDK6. Parece un buen programa, y todos pregonan cómo puede "adjuntarlo a un proceso en ejecución" como una característica principal. El problema es que parece ser la única forma en que lo usa en un proceso local. Quiero poder iniciar mi programa en el generador de perfiles y rastrear su ejecución completa .Perfil Ejecución de programa de Java completo en VisualVM
He intentado utilizar la opción -Xrunjdwp
descrita en how to profile application startup with visualvm, pero entre los dos métodos de transporte (memoria compartida y servidor), ninguno me es útil. VisualVM no parece tener ninguna integración con el primero, y VisualVM se niega a conectarse a localhost
o 127.0.0.1
, por lo que este último tampoco es bueno. También traté de insertar una lectura simple de System.in
en mi programa para insertar una pausa en ejecución, pero en ese caso VisualVM bloquea hasta que finalice la lectura, y no le permite comenzar a perfilar hasta que la ejecución esté en marcha. También he intentado buscar en the Eclipse plugin pero el sitio web está lleno de enlaces muertos y el iniciador simplemente se bloquea con un (esto puede no ser más preciso).NullPointerException
cuando intento usarlo
Viniendo de C, esto no me parece una tarea particularmente difícil. ¿Me estoy perdiendo algo o es realmente una solicitud imposible? Estoy abierto a todo tipo de sugerencias, incluido el uso de un perfilador diferente (también gratuito), y no soy contrario a la línea de comandos.
Respondiendo a la pregunta a la que se ha referido, ¿has intentado 'suspend = y', en lugar de' suspend = n' publicado? No necesitarías leer de 'System.in' si ese fuera el caso. –
Sí, pero no importa. No veo ninguna forma de conectar el programa a VisualVM, independientemente del parámetro 'suspend '. – kbolino
Debe haber un "correctamente" allí en alguna parte. Por supuesto, VisualVM puede ver el proceso. El problema es que no puede perfilarlo. – kbolino