Che cosa è il modo migliore di trovare TUTTA la memoria quando si sviluppa il Compact Framework?

StackOverflow https://stackoverflow.com/questions/10309

  •  08-06-2019
  •  | 
  •  

Domanda

Ho usato il CF Performance Monitor Remoto, tuttavia questo sembra solo tenere traccia di memoria inizializzato in tutto il mondo gestito in contrapposizione al mondo non gestito.Beh, posso solo presumere che questo, come i numeri elencati nel profiler sono a corto di massimo consentito (32mb su CE 5).Il Profiling di un'app in particolare con il numero di GIRI mi ha mostrato che l'utilizzo totale di tutte le cache solo riesce ad arrivare a circa 12mb e poi lentamente si restringe, come (credo) qualcosa non gestito inizia a reclamare più memoria.Il dispositivo di scorrimento della memoria nel Sistema, inoltre, indica che il dispositivo è molto poca memoria.Se uccido il processo, l'indicatore mostra tutta la memoria di ritorno.Quindi deve (?) essere gestito questo processo che sta inghiottendo la memoria.

C'è qualche semplice(ish?) la moda, come si può tenere traccia di memoria non gestita di utilizzo, in qualche modo, che potrebbe permettere a me di abbinare con il corrispondente P/Invoke chiamate?

EDIT:Per tutti si ri-tagger non è così .NET, tagging domanda come questo confonde le cose.È .NETCF / Compact Framework.So che sembrano essere simili ma diversi perché .NET rocce considerando che il CF è fondamentalmente solo un wrapper di NotImplementedException.

È stato utile?

Soluzione

Prova ad abilitare il Interoperabilità di registrazione.

Inoltre, se si ha accesso al codice dei nativi dll in uso, controllare questo fuori: http://msdn.microsoft.com/en-us/netframework/bb630228.aspx

Altri suggerimenti

Sicuramente ho lottato con problemi non gestito in C# gestito app per un po ' - non è facile.

Quello che ho trovato più utile è quello di avere una regolare l'output a un file di log di testo.Per esempio è possibile stampare l'output di GlobalMemoryStatus ogni paio di minuti insieme con la registrazione ogni volta che si carica una nuova forma.Da lì si può almeno vedere che la memoria corrodendo, o una grande quantità di memoria scomparso in momenti specifici della giornata.

Per noi, abbiamo trovato una graduale perdita di memoria per tutto il giorno fino a quando il dispositivo è stato utilizzato.Da lì alla fine abbiamo scoperto che il codice a barre di scansione, il dispositivo è in fase di inizializzazione per nessun motivo particolare, nella nostra Forma di base di classe (credo che la colpa sia lo sviluppatore precedente!:-)

L'impostazione di questa registrazione può essere un piccolo fastidio, ma per noi è pagato dividendi enormi, nel lungo periodo, soprattutto con il dispositivo in uso in tempo reale siamo in grado di ottenere dati reali, la strumentazione, le tracce dello stack da eccezioni, etc.

Ok, sto usando il C++, CE, non C#, quindi questo non può essere utile, ma...

Io uso un pacchetto chiamato Entrk toolbox che controlla la memoria e l'utilizzo delle risorse, le perdite, e le eccezioni in Windows CE.Molto simile ad un leggero CE versione di boundschecker.Fa il trucco più volte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top