Est-il possible de forcer le garbage collection en Java, même si c'est délicat à faire ? Je connais System.gc();
y Runtime.gc();
mais ils suggèrent seulement de faire GC. Comment puis-je forcer le GC ?
Réponses
Trop de publicités?Les spécifications de la JVM ne disent rien de spécifique sur la collecte des déchets. De ce fait, les fournisseurs sont libres d'implémenter la GC à leur manière.
Cette imprécision entraîne donc une incertitude dans le comportement du ramassage des ordures. Vous devez vérifier les détails de votre JVM pour connaître les approches/algorithmes de ramassage des déchets. Il existe également des options permettant de personnaliser le comportement.
Si vous devez forcer le ramassage des ordures, vous devriez peut-être vous pencher sur la façon dont vous gérez les ressources. Créez-vous de gros objets qui persistent en mémoire ? Créez-vous des objets de grande taille (par exemple, des classes graphiques) qui ont une durée de vie d'un an ? Disposable
et ne pas appeler dispose()
lorsqu'il est terminé ? Déclarez-vous quelque chose au niveau de la classe dont vous n'avez besoin que dans une seule méthode ?
Il serait préférable que vous décriviez la raison pour laquelle vous avez besoin du garbage collection. Si vous utilisez SWT, vous pouvez disposer de ressources telles que les éléments suivants Image
y Font
pour libérer la mémoire. Par exemple :
Image img = new Image(Display.getDefault(), 16, 16);
img.dispose();
Il existe également des outils permettant de déterminer les ressources non éliminées.