Bonjour,
voici mon programme :
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 public class Chien{ private String nom, aboiement; private static int numero = 0 ; private int numeroperso = 0 ; public Chien(){ nom = "Toutou"; aboiement = "wouf"; numero++; numeroperso = numero; } public Chien(String nom, String aboiement){ this.nom = nom; this.aboiement = aboiement; numero++; numeroperso = numero; } public int getIdent(){ return numeroperso; } public int getIdentMax(){ return numero; } protected void finalize() throws Throwable{ if(this == null) // je ne suis pas sure du tout que ça doit commencer comme ca... {} } }J'utilise System.gc() pour obliger le programme à lancer le garbage collector. Je voulais tout d'abord savoir si le garbage collector sert bien à supprimer les objets (ou à libérer la case mémoire : quelle est la différence ?) qui sont null.
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
20
21
22
23
24 public class TestChien{ public static void main(String args[]){ Chien B = new Chien("Médor", "aaaa"); System.out.println(B.getIdent()); Chien C = new Chien("Bill", "waaaf"); Chien D = new Chien("Bill2", "waaaf2"); System.out.println(C.getIdent()); Chien A = new Chien(); System.out.println(A.getIdent()); System.out.println(B.getIdent()); System.out.println(C.getIdentMax()); A = B; B = C; D = null; System.out.println(A.getIdent()); System.out.println(B.getIdent()); System.gc(); System.out.println(A.getIdent()); System.out.println(B.getIdent()); System.out.println(D.getIdent()); }
Quand je lance TestChien, il veut bien le compiler mais lors de l'exécution, il y a une erreur car c'est normal, D = null
Si j'ai bien compris, ma méthode finalize() se lance toute seule (pas besoin de l'appeler dans main) mais je ne sais pas quoi écrire dedans : est-ce qu'elle est bien sensée supprimer les objets ? Est-ce la même chose que le garbage collector ou un outil du garbage collector ?
Je dois aussi créer une variable et la/les méthode/s nécessaire/s pour savoir environ le nombre de chiens dans le programme.
Est-ce que mon objet Chien D est bien candidat au ramasse miette ? Comment savoir qu'il a été ramassé ?
Et aussi : à quoi sert protected ?
J'ai bien regardé les tutoriels mais je ne trouve pas de détails sur l'utilisation du ramasse miette.
Merci pour votre aide
Partager