voilà: J'écris une classe ( faisant appel à d'autres codes) et mon intuition me fait soupçonner que je vais avoir des problèmes avec les objets de ce type.
J'écris donc des tests dont un qui consiste à rajouter un finalize pour tracer la récupération de l'objet, créer un tel objet, mettre la référence à null puis en boucle créer un paquet d'objets qui sature la mémoire.
D'habitude on voit la trace ... mais pas là! Donc je me torture l'esprit pour essayer de comprendre où cet objet est encore référencé ... et mon neurone refuse de me trouver une solution
J'essaye de reproduire le problème avec des objets analogues ... qui eux n'ont pas de problème! A force de supprimer des références membres j'ai trouvé la référence membre qui déclenche le souci: sauf que je ne comprends pas en quoi cette référence qui n'a pas elle même de référence sur l'objet "contenant" peut poser problème....
Le code a à peu près cette allure:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
class ClasseAProbleme {
        // quelques variables membres
        private TypeA refA ; // TypeA n'est pas une classe membre d'instance
        private TypeB refB ; // même remarque
     public ClassAProbleme() {
          // initialisations diverses
          refa = new TypeA(this.var1) ;
          refB = new TypeB(refa) ;
     }
     // si je met refB à null ça marche .....  
}
 
// code du main dans un test
      ClasseAProbleme probleme = new ClasseAProbleme() ;
      probleme = null ;
      // boucle créant des tonnes d'objets
      // pas de trace si refB est initialisée
      // trace si refB à null
Bien entendu ce code ne donne pas d'indications sur le fond du problème qui est sans doute lié à la nature de "TypeB"....
Donc question: quelqu'un pourrait-il m'indiquer un moyen de "tracer" les références liées à cet objet au travers d'un debuggueur rusé?
Merci