2011-03-17 20 views
33

Me gustaría saber si hay una forma de verificar cuántas referencias tiene un objeto Java. Por lo que pude comprobar, la única forma de hacerlo es utilizando JVMTI a través de una interfaz JNI. ¿Hay una solución java pura (sin usar bibliotecas nativas) para obtener esta información?¿Es posible obtener el recuento de referencia del objeto?

Estamos desarrollando una herramienta educativa para la animación de la estructura de datos (para ser utilizada con la implementación de ciertos algoritmos), así que sería muy bueno si pudiéramos verificar objetos "liberados" de la manera más no intrusiva (I Estoy intentando evitar forzar al usuario de esta herramienta a llamar a un método como ObjectReleased (objRef) para actualizar la animación de la estructura de datos para la eliminación de un elemento o algo similar)

+2

Los recuentos de referencia no se rastrean en una JVM. La única forma de saber es contarlos. – Gabe

+1

Hay una biblioteca que se puede usar para recibir notificaciones cuando un objeto es basura. Consulte este enlace para obtener más información http://sourceforge.net/projects/gcradar/ –

+0

@ AmrenduPandey, no simplemente "escriba algunas letras en negrita": esa no es una forma adecuada de mejorar una pregunta. Las ediciones deberían ser sustanciales, no solo estar formateando los cambios. – Charles

Respuesta

12

Desde su descripción, parece que se preocupan menos por el número real de referencias que simplemente saber cuando un objeto que se ha recogido . Si este es el caso, puede usar WeakReference o PhantomReference para determinar cuándo un objeto al que se hace referencia está listo para la finalización.

Ver:

Espero que esto ayude.

Cuestiones relacionadas