Che cos'è una perdita della maniglia?
Una perdita di handle è un tipo di perdita di risorse, una situazione in cui una risorsa di elaborazione finita come la memoria viene eccessivamente consumata da un'applicazione. Le perdite di handle si verificano quando un'applicazione apre un "handle", un tipo speciale di riferimento a una risorsa di sistema e non riesce a chiudere tale handle quando non è più necessario. Hanno il potenziale per ridurre le prestazioni, causare arresti anomali delle applicazioni o del sistema e possono essere un sintomo di bug importanti o codici sciatti in un programma software. Numerosi strumenti di risoluzione dei problemi sono disponibili per i programmatori per aiutarli a combattere le perdite di gestione.
Nella programmazione del computer, un handle è una struttura che fa riferimento a una risorsa di sistema, come un blocco di memoria o un file su un disco. Gli handle forniscono uno strato di astrazione tra le risorse di sistema e le applicazioni e di solito sono gestiti dal sistema operativo di un computer attraverso una "tabella degli handle" che corrisponde a ciascun handle con una risorsa. Un programmatore potrebbe utilizzare una maniglia per fare riferimento a una finestra che viene quindi disegnata sullo schermo dal sistema operativo.
Un'applicazione ben gestita rilascerà gli handle che non richiede più, liberando risorse e garantendo che il sistema operativo non finisca per gestire una risorsa che non è in uso. Errori di programmazione, bug del software e incompatibilità tra i software possono far sì che i programmi si blocchino sui manici di cui non hanno più bisogno. Man mano che l'applicazione continua a funzionare, è possibile che accumuli un numero elevato di handle non necessari. Questo è noto come una perdita di handle.
Gestire le perdite, come altri tipi di perdite di risorse, può portare a prestazioni lente, instabilità del sistema o, in casi estremi, a un arresto anomalo del computer. Questo perché gli handle consumano risorse limitate come la memoria di sistema e se un'applicazione genera un numero eccessivo di handle senza chiuderli, queste risorse si esauriscono. L'esatta soglia alla quale una perdita di handle inizia a causare problemi dipende dal sistema operativo del computer, dalla quantità di memoria disponibile e da altri fattori. Una perdita in cui alcune dozzine di handle sono lasciati aperti probabilmente non verrà notata dagli utenti, mentre una perdita di handle di diecimila o più è un segno di un grave bug nel codice dell'applicazione.
I programmatori devono prestare particolare attenzione per gestire le perdite dato il loro potenziale di causare problemi. Il metodo più semplice per diagnosticare una perdita di handle è osservare il numero di handle, ovvero il numero di handle attualmente aperti da un processo o da un'applicazione durante l'esecuzione dell'applicazione. Task Manager di Windows® può visualizzare queste informazioni e utilità di terze parti sia per Windows® che per altri sistemi operativi possono anche essere utili per identificare e rintracciare le maniglie che perdono.