Para depurar la carga de clase en una JVM, podemos usar el parámetro -verbose:class
, pero ... ¿Alguien sabe cómo depurar la carga de recursos (por ejemplo, archivos de propiedades)?Cómo depurar los recursos de JVM cargando?
Respuesta
Supongo que debe considerar el uso de un generador de perfiles. O algo que usa la interfaz de instrumentación.
No estoy seguro de qué tan estable es, pero hay BTrace, que es una especie de versión Java de DTrace.
BTrace es una herramienta de seguimiento segura y dinámica para la plataforma Java. BTrace se puede utilizar para rastrear dinámicamente un programa Java en ejecución. BTrace instrumenta dinámicamente las clases de la aplicación de destino para inyectar el código de seguimiento ("bytecode tracing"). El código de seguimiento se expresa en el lenguaje de programación Java.
Si está haciendo esto en una máquina de desarrollo, y la cantidad de eventos (recursos que se están cargando) no es demasiado frecuente, también puede establecer un punto de interrupción en el depurador.
Los recursos se proporcionan como URL
s. Entonces, supongo que para hacerlo en Java "puro": instale un ClassLoader
personalizado que copie URL
s en una versión con un URLStreamHandler
personalizado. Coloque su código de monitoreo en el controlador de flujo y reenvíelo al original.
En un entorno Linux que puede probar:
lsof -p <jvm pid>
que le dará una lista con los descriptores utilizados por el programa asociado con el pid especificado.
El problema es que muchos recursos se pueden cargar desde un único archivo jar, que solo se puede abrir una vez. – erickson
Acepto, en ese caso, creo que la mejor opción es ir con la solución ClassLoader –
Usted podría utilizar InTrace para instrumentar las clases de cargador de clases que hacen la carga.
Para la JVM de Sun, se recomienda usar los siguientes, como los patrones de rastrear las clases apropiadas:
- ClassLoader
- URLClassPath
- cargador
No existe un par de técnicas para depurar problemas de carga de clases. Aquí hay buenas diapositivas de la creadores JRebel que resumen estas técnicas: Do you really get class loaders?
- 1. Cargando recursos usando getClass(). GetResource()
- 2. Java: ¿Cuál de los múltiples recursos en classpath JVM toma?
- 3. Cargando javascript en un UIWebView desde los recursos
- 4. ¿Cómo depurar JavaScript de forma asíncrona? (Muchos guiones están cargando)
- 5. Cargando recursos de estilo FireMonkey con RTTI
- 6. Buenos recursos para aprender a depurar php
- 7. Cómo leo los argumentos de JVM en Spring applicationContext.xml
- 8. ¿Cómo depurar los servicios RESTful?
- 9. Cargando recursos por primavera en un servidor de aplicaciones websphere
- 10. Cargando el estilo WPF desde el archivo de recursos
- 11. ¿Cómo depurar los informes de jaspe?
- 12. getResourceAsStream no está cargando recursos en la aplicación web
- 13. ¿Qué son los bytecodes y cómo los maneja JVM?
- 14. ¿Cómo anido los identificadores de recursos?
- 15. ¿Cómo copiar el archivo de los recursos?
- 16. ¿Cómo acceder a los recursos de prueba?
- 17. Recursos de Android: ¿Cómo se manejan los mapas de bits de los recursos manejados en memoria?
- 18. JVM consume todos los CPU, la mayoría de los hilos BLOQUEADOS. ¿Error de JVM?
- 19. ¿Cómo se diferencian las "JVM modernas" de las JVM antiguas?
- 20. ¿JVM termina después de OutOfMemoryError
- 21. ¿Cómo implementan JVM IdentityHashMap?
- 22. ¿Cómo definir correctamente los colores en los diccionarios de recursos?
- 23. Android: ¿Cómo organizar los recursos del proyecto?
- 24. Qt cómo acceder a los recursos
- 25. ¿Cómo uso los recursos globales en WPF?
- 26. ¿Cómo liberar los recursos utilizados por HttpPostedFileBase?
- 27. Eliminando los recursos de ActiveAdmin
- 28. ¿Cómo se maneja cuando los recursos REST están vinculados y amplían los recursos ya existentes?
- 29. Recuperando todos los recursos extraíbles del objeto de recursos
- 30. diferencia entre los métodos de recursos y recursos
el enlace está muerto –
@FastSnail: parece que se mudaron a Github. Enlace actualizado – Thilo