/ / Perdita di memoria nell'applicazione xbap - wpf, perdite di memoria

Perdita di memoria nell'applicazione xbap - wpf, perdite di memoria

Stiamo utilizzando molti controlli personalizzati ereditando il modulo WPFcontrols come base e personalizzandolo per le nostre necessità.

Tuttavia, la memoria utilizzata da questi controlli non viene rilasciata, anche dopo che le pagine che utilizzano i controlli sono chiuse, finché l'intera applicazione non viene chiusa.

Poiché queste applicazioni devono funzionare per un'intera giornata, le prestazioni diminuiscono man mano che viene accumulata una quantità maggiore di memoria.

Quando abbiamo profilato la nostra pagina, abbiamo scoperto che i controlli dove non vengono raccolti lì dove alcuni riferimenti di rilegatura o alcuni bordi o pennelli ecc non vengono cancellati da quel controllo.

Abbiamo provato a utilizzare l'evento Unload dei controllirimuovere gli eventi e alcuni riferimenti dal controllo. Ciò ha ridotto la perdita in una certa misura, ma questo rallentava la chiusura della pagina, anche l'evento di scarico veniva attivato quando il controllo era addirittura collassato.

Esistono altri modi per superare la perdita? Esistono buone pratiche per prevenire perdite di memoria?

Grazie

Arvind

risposte:

1 per risposta № 1

Stai usando membri statici? (Soprattutto collezioni ed eventi)

Se è così, assicurati di rimuovere i controlli da loro quando vengono scaricati.

MODIFICARE: Voglio dire che dopo aver finito con acontrollo (quando la sua pagina è chiusa), dovresti rimuoverlo dall'albero visuale, chiamare Dispose su di esso e usare un profiler di memoria per assicurarti che non sia referenziato da nessuna parte.

Utilizzare un profiler di memoria per scoprire quali oggetti sono trapelati e perché.