clear()
définit simplement la référence interne à null
. Puisque les références sont automatiquement effacées lorsqu'elles sont mises en file d'attente par le garbage collector (à l'exception des références fantômes, mais que cette bizarrerie peut être ignorée, elles seront éliminées en Java 9), il n'est généralement pas nécessaire d'appeler clear()
sur une référence reçue via ReferenceQueue.remove()
.
En principe, il y a la possibilité de enqueue références manuellement via enqueue()
sans les effacer, mais il y a peu de sens que, comme le but principal de la file d'attente de référence est d'en savoir plus sur les références étant en file d'attente par le collecteur des ordures qui sera effacé.
Lorsque vous appelez clear()
sur un objet Reference
qui n'a pas encore été en file d'attente, il peut permettre de se référent recueilli sans mise en attente de l'objet Reference
. D'un autre côté, lorsque vous n'avez plus besoin de l'objet Reference
, vous pouvez laisser la JVM la collecter comme un objet ordinaire, avec le référent s'il n'y a plus d'autres références, car dans ce cas, il ne sera pas mis en file d'attente, rendant inutile clear()
.
J'ai supprimé ma réponse, car après avoir vu votre commentaire, je suis sûr que je n'ai pas expliqué ce que je voulais correctement. Je vais essayer de faire ça d'une meilleure façon. –