Estoy tratando de usar el Eclipse VisualVM launcher. Parece bastante agradable, excepto que parece generar una instancia si VisualVM es demasiado tarde para hacer cualquier perfil de mi aplicación. Mi aplicación finaliza la ejecución antes de que el generador de perfiles esté incluso inicializado; una vez que se inicia, aparece una ventana de error que dice: cannot open requested application
. A continuación, muestra la máquina virtual que ejecuta Eclipse (etiquetada como "org.eclipse.equinox.launcher.Main"). ¿Cómo puedo esperar para que mi aplicación y hacer un perfil adecuado?Error de iniciador VisualVM
Respuesta
Sé el problema. solución del único hombre pobre que siempre ocurrió con es:
- Establecer un punto de interrupción en el código fuente
- comenzar su programa en modo de depuración
- Conectar el generador de perfiles
- dejar que el programa continúe
Simplemente toma un poco de tiempo para que VisualVM inserte el agente de creación de perfiles en su VM y estoy bastante seguro de que solo permite la creación de perfiles remotos.
Como alternativa puede usar YourKit, puede perfilar su aplicación desde el principio. De esta manera se inyecta el agente de perfiles en el arranque VM:
java -agentpath:c:\yourkit\yjpagent.dll FooClass
Tengo curiosidad por qué VisualVM no ofrece esta opción, ya que su técnicamente posible. De todos modos, creo que el truco de depuración es una buena solución desde dentro de Eclipse, a menos que también esté interesado en la clase de carga, etc.
Esto es probablemente demasiado tarde, pero tuve el mismo problema y establecí un punto de interrupción y luego empecé en el modo de depuración no ayudó en absoluto. Eventualmente descubrí que VisualVM guarda sus datos temporales en la carpeta% TMP%/hsperfdata_ [username], en mi máquina Windows esa carpeta era C: \ Users \ Jacob \ AppData \ Local \ Temp \ hsperfdata_Jacob, por ejemplo. Resultó que el proceso no tenía suficientes permisos para acceder a esa carpeta, así que relajé los permisos y ahora funciona bien. Espero que esto sea útil para alguien que tenga el mismo problema.
En Windows, ejecute Eclipse como administrador.
Esto funcionó muy bien para mí en Windows 8. ¡Gracias, Andrés! –
De nada. – Andres
Esta es una solución tonta, pero funciona. Aquí va:
Agregue un envoltorio de bucle infinito a su aplicación, diga "while (true) {your_app}".
Los ruidos de temporización también se igualarán a medida que su programa se ejecute más.
- 1. VisualVM socket.read
- 2. VisualVM en producción?
- 3. Depuración conexión remota VisualVM
- 4. visualvm history graph
- 5. VisualVM sobre ssh
- 6. Perfil Ejecución de programa de Java completo en VisualVM
- 7. Conecte visualvm a websphere 7
- 8. visualvm vs JProbe vs JProfiler
- 9. ¿Qué iniciador se está ejecutando?
- 10. atajo de Android, iniciador de acceso db
- 11. Entender el iniciador de android personalizado
- 12. Comparación de VisualVM y Eclipse TPTP
- 13. VisualVM incapaz de la memoria del muestreador
- 14. visualvm no es parte de OpenJDK7?
- 15. Iniciar automáticamente perfiles de CPU con VisualVM
- 16. Cómo encontrar fugas de memoria usando visualvm
- 17. ¿Por qué Eclipse usa un iniciador nativo?
- 18. Prevenir automáticamente aplicaciones comenzando desde el iniciador
- 19. Perfil JUnit en Eclipse Indigo usando VisualVM
- 20. icono del Iniciador falta en Android
- 21. VisualVM a través de firewalls: solución de problemas de RMI
- 22. Diferencia entre Inicio de categoría y Iniciador de categoría
- 23. Filtro de intención para iniciador y actividad de envío
- 24. Widget flotante/Overlay en el iniciador de Android
- 25. ¿Por qué VisualVM no muestra hilos de daemon en Linux?
- 26. cómo perfilar el inicio de la aplicación con visualvm
- 27. ¿Cómo hacer pruebas de carga utilizando jmeter y visualVM?
- 28. Cómo usar VisualVM para detectar el cuello de botella/problema
- 29. Haz que VisualVM muestre los números de línea
- 30. ¿Puedo comparar los volcados de hprof/jmap con VisualVM?
¿No podría simplemente Thread.sleep() mientras se está resolviendo? –
@RyanAmos Eso también es posible, he hecho esto antes de llegar al modo de depuración. No me gustó sincronizarlo junto con 'Timer.sleep', ya sea que tengas que esperar hasta que 'sleep' desaparezca o la conexión tarde demasiado. –
YourKit es demasiado caro. ¡Gracias por la ayuda! –