Maison > développement back-end > C++ > Les gestionnaires d'événements empêchent-ils le garbage collection des objets de publication ?

Les gestionnaires d'événements empêchent-ils le garbage collection des objets de publication ?

Mary-Kate Olsen
Libérer: 2025-01-27 00:01:13
original
320 Les gens l'ont consulté

Do Event Handlers Prevent Garbage Collection of Publishing Objects?

Procédures de traitement des événements et recyclage des ordures

Le programme de traitement des événements joue un rôle essentiel dans la réponse à divers événements. Cependant, un malentendu commun est que les procédures de traitement des événements empêchent les objets d'être recyclés par les ordures.

La procédure du recyclage des ordures et de la manipulation des événements

dans le fragment de code fourni:

MyEvent d'abonné incident est affecté à la méthode MyFunction. Lorsque PCLASS est affecté à NULL, la question apparaît: si la PCLASS sera récupérée immédiatement, ou s'il existe toujours et déclenche un événement.

<code>MyClass pClass = new MyClass();
pClass.MyEvent += MyFunction;
pClass = null;</code>
Copier après la connexion
Réponse: Les abonnés incidents n'affecteront pas le recyclage des ordures du Pulf

La réponse est oui sur la récupération de la PCLASS par les ordures. Les abonnements à l'événement n'empêcheront pas la récupération des ordures de l'objet de publication (PCLASS). Cependant, il convient de noter que le retour des ordures de l'objet cible (l'objet de l'incident) est statique ou une instance en fonction de la méthode de myFonctionnement.

Procédures statiques de gestion des événements

Si MyFunction est statique, il ne tient pas de référence à l'instance. Par conséquent, l'utilisation de méthodes statiques pour s'abonner pour les incidents n'empêchera pas le recyclage des ordures d'objets cibles.

Procédure de traitement des événements basés sur l'entreprise

Si MyFunction est une méthode d'instance, la détente contient la référence à l'instance. Cela signifie que l'utilisation des méthodes basées sur l'instance pour s'abonner aux événements empêchera l'objet cible d'être recyclé par ordures. Cependant, une fois que l'objet de publication (PCLASS dans cet exemple) remplit les conditions de collecte, ce problème n'existera plus.

Remarque: La relation entre les abonnés incidents et le recyclage des ordures est une seule voie. Si PCLASS s'abonne aux événements traités par des méthodes basées sur l'instance, PCLASS gardera l'objet cible. Cependant, si l'objet cible s'abonne à un événement publié par PCLASS, PCLASS ne conservera pas l'objet cible dans l'activité.

Annuler la récupération des ordures de l'abonnement à l'objet du cycle de vie long

Si la PCLASS est un cycle de vie long et que son temps de séjour à la mémoire est plus long qu'une instance avec myfonction, il peut empêcher l'instance cible d'être recyclée par les ordures. Dans ce cas, l'événement d'abonnement doit être annulé après le traitement pour permettre l'objet cible. Par conséquent, les procédures de traitement des événements n'empêcheront pas la récupération des ordures de l'objet de publication. Cependant, il est nécessaire de déterminer si le type de procédure de traitement des événements (basé sur des instances ou basé sur l'instance) et si l'objet d'abonnement est un cycle de vie long.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal