Wyciek pamięci

Forum poświęcone językowi C#.

Moderator: xxSlayeRxx

Wyciek pamięci

Sponsor

Sponsor
 

Wyciek pamięci

Postprzez mhnxo » So kwi 19, 2014 8:44 pm

cześć, zauważyłem, że mój program za każdym razem gdy przejdzie swój "algorytm" i wraca się na start przybiera masy (;) ) tzn rośnie użycie ramu o ok 100MB. Nie mam pojęcia dlaczego, istnieje jakiś sposób żeby zobaczyć co on dokładnie trzyma w tych 100MB ramu? :>
mhnxo
Member
 
Posty: 18
Dołączył(a): Wt gru 31, 2013 3:41 am

Re: Wyciek pamięci

Postprzez ToNi » Wt kwi 22, 2014 8:57 am

Prawdopodobnie przez to masz taki problem, ze niepotrzebne obiekty nie sa wywalane z pamieci:) Ogolnie swiadczy to o tym, ze trzeba do klas podorabiac finalizery, zaimplementowac IDisposable, obiektow uzywac w using() itd. Mozesz tez uzyc klasy PerformanceCounter to zmierzenia co i ile ramu Ci zabiera
ToNi
Member
 
Posty: 116
Dołączył(a): Cz lis 15, 2012 11:06 pm

Re: Wyciek pamięci

Postprzez mhnxo » Cz maja 01, 2014 6:26 pm

Znalazłem taką małą funkcje, która idealnie czyści ;)
Może komuś się przyda:
Kod: Zaznacz cały
using System.Runtime.InteropServices;
....
public class anyname
{ ....
[DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize", ExactSpelling = true, CharSet = CharSet.Ansi, SetLastError = true)]

private static extern int SetProcessWorkingSetSize(IntPtr process, int minimumWorkingSetSize, int maximumWorkingSetSize);

public static void alzheimer()
{
GC.Collect();
GC.WaitForPendingFinalizers();
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
}


wystarczy wywołać alzheimer() i viola ;)
mhnxo
Member
 
Posty: 18
Dołączył(a): Wt gru 31, 2013 3:41 am

Re: Wyciek pamięci

Sponsors

Sponsor
 


Powrót do C#

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 gości