274 votes

Comment forcer la collecte des déchets en Java ?

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 ?

7voto

rai.skumar Points 3187

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.

4voto

Bob Kaufman Points 6748

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 ?

1voto

Paul Lammertsma Points 12817

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.

1voto

user3684860 Points 21

Utile pour les batch/crontab :

jdk1.7.0/bin/jcmd GC.run

1voto

nabster Points 1313

Vous pouvez essayer d'utiliser Runtime.getRuntime().gc() ou utiliser la méthode utilitaire System.gc() Note : Ces méthodes ne garantissent pas la GC. Et leur portée doit être limitée à la JVM plutôt que de la gérer de manière programmatique dans votre application.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X