Ho un'applicazione C# che consiste in un pivot con più Pivotitems. I normali Pivotitems si scaricano correttamente e non perdono memoria. Su due degli elementi, però, ho Drawingsurfaces su cui utilizzo Monogame per il rendering di modelli 3d. Durante lo scarico e il caricamento dei loro perni sto cercando di distruggere completamente e quindi ricreare completamente le istanze di "Gioco" (principalmente perché Monogame non ti permette di disegnare su due superfici al momento e perché usano molta memoria e c'è non abbastanza per entrambi).C# Come rimuovere completamente l'oggetto dalla memoria
Il mio problema è che quando dispongo di Xamlgame che viene creato al momento del caricamento non rilascia tutta la memoria utilizzata. Ciò significa che ogni volta che ricreo Xamlgame inizia a utilizzare sempre più memoria finché non ne rimane più. Pertanto, vorrei sapere se esiste un modo C# per smaltire completamente tutta la memoria che è stata utilizzata al momento del caricamento di un oggetto.
Anche qualsiasi modo specifico per Monogame sarà apprezzato. Al momento sono il primo a gettare il mio vertice e il buffer dell'indice, poi svuoto il mio vertice e le mie liste indice, poi dispongo il mio Basiceffect e il mio Graphicsdevicemanager, quindi chiamo dispose sul "gioco" stesso e infine faccio la variabile che contiene il "gioco" uguale a null.
PS. Se lo hai mai fatto in XNA, potresti anche essere in grado di aiutarmi perché la sintassi è fondamentalmente la stessa.
EDIT (potrebbe essere MonoGame bug):
ora ho riuscito a pulire tutti i buffer ecc correttamente. C'è ancora una perdita di memoria sul mio BasicEffect però. Ho provato a eliminarlo e renderlo nullo, ma non importa cosa continua a utilizzare sempre più memoria ogni volta che ricarico il mio perno.
Se si eliminano tutte le risorse 'IDisposable', allora [' GC.Collect'] (http://msdn.microsoft.com/en-us/library/System.GC.Collect.aspx) non lavoro? – Romoku
Lo chiamo ma non sembra avere un effetto – Gerharddc
sei sicuro di disporre tutte le connessioni e gli articoli? puoi condividere il tuo codice? –