OVH Cloud OVH Cloud

[?] Nombre de référence sur un objet.

6 réponses
Avatar
Valdo Tschantre
Est-il possible, en Java, de connaitre le nombre de référence sur un objet?


*Exemple* :

<code>

C r1 = new C();
C r2 = r1;
// J'ai deux références sur un même objet.
int nbRef = UnClasseUtilitaire.getNumberOfRef(r2 /* ou r1 */);
// nbRef == 2.

</code>


Valdo.


--
valdo.tschantre@gmail-NOSPAM.com

6 réponses

Avatar
ZebX
Est-il possible, en Java, de connaitre le nombre de référence sur un objet?
Pas de réponse précise mais je pense que oui puisque les serveurs

d'application le font, d'autres part le garbage collector connait
l'ensemble des instances et que par réflexion, on peut connaitre le nom
d'une classe...

Avatar
Wismerhill
Valdo Tschantre ecrivit le 25/02/2005 12:41 :
Est-il possible, en Java, de connaitre le nombre de référence sur un objet?


*Exemple* :

<code>

C r1 = new C();
C r2 = r1;
// J'ai deux références sur un même objet.
int nbRef = UnClasseUtilitaire.getNumberOfRef(r2 /* ou r1 */);
// nbRef == 2.

</code>


Java ne propose pas, à ma connaissance, de moyen de connaître le
nombre de référence sur un object, par contre, tu peux savoir si un
objet est encore référencé (c.f. java.lang.ref). Sinon, tu peux
facilement faire ton propre système de comptage de référence (chercher
"smart pointer C++" dans google).

Avatar
PASTUREL JL
avec un profiler ( Optimzeit, Hyades ..) , tu peux connaitre le nombre de
références portées par un objet et le nombre de références d'un objet vers
les autres.
"Valdo Tschantre" a écrit dans le message
news: 421f0ec8$0$3128$
Est-il possible, en Java, de connaitre le nombre de référence sur un
objet?



*Exemple* :

<code>

C r1 = new C();
C r2 = r1;
// J'ai deux références sur un même objet.
int nbRef = UnClasseUtilitaire.getNumberOfRef(r2 /* ou r1 */);
// nbRef == 2.

</code>


Valdo.


--



Avatar
Symon
Pour éviter d'investir dans un profiler couteux :

Je crois que la JVM 1.5 propose un utilitaire de monitoring et de
gestion de JVM locales ou distantes (voir bin/jconsole dans le
répertoire d'installation du JDK, il suffit ensuite de démarrer la JVM a
monitorer avec l'option -Dcom.sun.management.jmxremote).

De tête, je crois qu'elle permet de connaitre le nombre de référence sur
chacun des objets en mémoire.

A+

Symon

PASTUREL JL wrote:
avec un profiler ( Optimzeit, Hyades ..) , tu peux connaitre le nombre de
références portées par un objet et le nombre de références d'un objet vers
les autres.
"Valdo Tschantre" a écrit dans le message
news: 421f0ec8$0$3128$

Est-il possible, en Java, de connaitre le nombre de référence sur un


objet?


*Exemple* :

<code>

C r1 = new C();
C r2 = r1;
// J'ai deux références sur un même objet.
int nbRef = UnClasseUtilitaire.getNumberOfRef(r2 /* ou r1 */);
// nbRef == 2.

</code>


Valdo.


--








Avatar
jlp
Pour éviter d'investir dans un profiler couteux :
[SNIP]

Hyades open-source gratuit. ( plugin eclipse)
Voir aussi le "profiler" de netbeans pour netbeans 3.6 / 4

Avatar
Valdo Tschantre
Suite au post de Wismerhill (merci à lui), je me suis intéressé au
package /java.lang.ref/. Il m'a permis de résoudre mon problème, qui
n'était finalement pas temps de connaître le nombre de référence
existant sur un objet, mais bien de savoir si un objet était ou pas
référencé (normalement). En l'occurrence j'ai utilisé la classe
/WeakReference/...

Merci,
Valdo.