2009-04-15 14 views

Respuesta

3

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.

+0

el enlace está muerto –

+0

@FastSnail: parece que se mudaron a Github. Enlace actualizado – Thilo

2

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.

1

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.

More Info

+2

El problema es que muchos recursos se pueden cargar desde un único archivo jar, que solo se puede abrir una vez. – erickson

+0

Acepto, en ese caso, creo que la mejor opción es ir con la solución ClassLoader –

2

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
1

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?

Cuestiones relacionadas