Durée de vie, propriété et arrêt contrôlé
Statut documentaire : guide. Durée de vie mémoire et durée de vie opérationnelle sont deux contrats distincts.
Quatre familles de propriété
- Interfaces à comptage de références : conserver une interface peut maintenir son objet en mémoire, sans garantir une connexion ouverte ou un service actif.
- Classes à propriété explicite : registres, providers, queues, modèles ou buffers peuvent nécessiter un
Freedocumenté ou un transfert de propriété. - Objets détenus par composants : des objets MVC/RadStudio natifs peuvent dépendre d'un
TComponent, avec règles propres de parent et de notification de destruction. - Valeurs Hypergraph manuelles : les valeurs de bas niveau comme
PNodeValuerequièrent des opérations natives de comptage de références ; ce ne sont pas des interfaces Delphi.
Séquence d'arrêt opérationnel
Pour chaque service, canal ou worker, déterminer qui cesse d'accepter du travail, vide les opérations en attente, attend les callbacks, déconnecte et libère l'instance. Le livre source illustre l'enchaînement Prepare → Start → Stop → Dispose (puis destruction de l'objet propriétaire) lorsque le service est géré directement. Un gestionnaire de services peut prendre ces hooks en charge.
Métadonnées du canal et instance de canal ouverte peuvent avoir des durées de vie différentes. Les threads et queues ne doivent pas survivre aux ressources touchées par leurs callbacks ; ne jamais supposer que la destruction suffit à vider les travaux asynchrones.
Questions à poser avant l'implémentation
Qui crée et libère la valeur ? Est-elle partagée entre threads ? Quel état survit à l'opération en cours ? Reset efface-t-il une session logique, des buffers hôtes ou la mémoire du backend ? Quelle erreur ou callback peut arriver après le début de l'arrêt ? Un LLM résident conserve-t-il ses poids et son cache KV entre deux étapes de décodage ?
Pratiques associées
Checklist de production Runtime · Propriété ABI · Diagnostics d'exploitation
Sources LaTeX : runtime-lifetime-ownership-and-shutdown.tex ; production-readiness.tex ; performance-profiling-and-thread-safety.tex.