Care este cea mai bună modalitate de a găsi TOATE memoria dvs. atunci când vă dezvoltați pe cadrul compact?

Am folosit fișierul CF Remote Performance Monitor , totuși, acest lucru pare să urmărească doar memoria inițializată în lumea gestionată, spre deosebire de lumea neadministrată. Ei bine, nu pot decât să presupun acest lucru, deoarece numerele enumerate în profiler sunt mult mai mici decât maximul permis (32mb pe CE 5). Profilarea unei aplicații particulare cu RPM mi-a arătat că utilizarea totală a tuturor cache-urilor reușește să ajungă la aproximativ 12mb și apoi se micșorează lent, deoarece (presupunem) ceva neangajat începe să solicite mai multă memorie. Sliderul de memorie din sistem arată, de asemenea, că dispozitivul are o memorie foarte scurtă. Dacă ucid procesul, glisorul arată că tot memoria se întoarce. Deci trebuie să fie (?) Acest proces gestionat care înghite memoria.

Există o metodă simplă (ish?) Cum se poate urmări utilizarea neadecvată a memoriei într-un fel care ar putea să-mi permit să mă potrivesc cu apelurile P/Invocate corespunzătoare?

EDIT: To all you re-taggers it isn't .NET, tagging the question like this confuses things. It's .NETCF/Compact Framework. I know they appear to be similar but they're different because .NET rocks whereas CF is basically just a wrapper around NotImplementedException.

0
fr hi bn
".Net roci, în timp ce CF este în principiu doar un înveliș în jurul NotImplementedException." Îmi place citatul ăsta!
adăugat autor Stormenet, sursa

3 răspunsuri

Încercați să activați Înregistrarea interop .

Also, if you have access to the code of the native dll you are using, check this out: http://msdn.microsoft.com/en-us/netframework/bb630228.aspx

0
adăugat
Știu că acesta este post vechi, dar sperăm că veți vedea acest lucru și veți răspunde. Al doilea link duce la msdn.microsoft.com/en-us/vstudio/aa496123 care pare a fi un site de nivel superior pentru studioul vizual. Îți amintești cu ce te-ai conectat?
adăugat autor Miserable Variable, sursa

Cu siguranta m-am luptat pentru o perioada de timp cu probleme nepartimentate intr-o aplicatie gestionata de C# - nu e usor.

Ceea ce am descoperit a fi cel mai util este să aveți o ieșire regulată într-un fișier jurnal de text. De exemplu, puteți imprima la fiecare două minute de ieșire GlobalMemoryStatus cu logare de fiecare dată când încărcați un nou formular. De acolo puteți vedea cel puțin că fiecare memorie se erodează treptat sau că au dispărut niște bucăți mari de memorie în anumite momente ale zilei.

Pentru noi, am găsit o pierdere treptată de memorie toată ziua atâta timp cât dispozitivul era folosit. De acolo am descoperit în cele din urmă că dispozitivul de scanare cod de bare a fost inițializat pentru nici un motiv special în clasa de bază a formularului nostru (vină dezvoltatorul anterior :-)

Configurarea acestei înregistrări ar putea fi un hassle mic, dar pentru noi a plătit dividende uriașe pe termen lung, mai ales cu ajutorul dispozitivului în direct, putem obține date reale, instrumente, stack-uri de la excepții etc.

0
adăugat

Ok, folosesc C ++ pe CE, nu C#, deci nu poate fi de ajutor, dar ...

Folosesc un pachet numit setul de instrumente Entrk care monitorizează utilizarea memoriei și a resurselor, scurgerile și excepțiile sub Windows CE. Destul de mult ca o versiune ușoară CE a limbajului. Are truc de cele mai multe ori.

0
adăugat