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...
	{}
	}
}
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());
	}
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.
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