Article View: pl.comp.lang.vbasic
Article #92552Re: .NET problemy z pamięcią
From: Andrzej J. Turowicz
Date: Thu, 03 Nov 2005 00:25
Date: Thu, 03 Nov 2005 00:25
72 lines
4042 bytes
4042 bytes
Są , IMHO 2 przyczyny wycieku pamieci
1- programista myśli że zwalnia obiekty, ale one są i dobrze się maja
(pewnie to nie jest przypadek kolegi Artura)
2- w trosce o chybkosc programu algorytm GC kollectora woli zajmować
pamieć, zwłaszcza jak na kompie jest jej duzo
niz uruchamiac sprzątanie, które przeszkadza,
Jezeli to jest ten 2-gi problem to bym się nie przejmował, maszyna ma wolny
RAM, to go .Net zabiera
jak zabraknie to
- albo wyczyści i nic sie wioelkiego nie stanie
- albo zacznie migotać dysk i pisać do SwapFila, to oznacza że zachodzi
przypadek 1.
Mozna to zaobserwować wyraźnie zmniejszajac pamięć kompa np do 256MB przez
chwilowe wyjęcie kości pamięci.
Jak zadanie, które zabierało 1GB da sobie wtedy radę bez swapowania to
znaczy że jest OK
W przeciwnym wypadku nalezy przemyśleć takie powiedzonko
"Program robi to co programista napisał, czasem ale niezwykle rzadko,
to co programista chciał aby program robił" :)
--
Pozdrawiam
Andrzej
www.turowicz.pl wap.buchalter.com.pl
-
Użytkownik "Tomasz Kopacz" <tkopacz@nospam.idg.com.pl> napisał w wiadomości
news:caqbkd3ad60t$.dlg@fdsvzxcc.rtb.com...
> On Wed, 02 Nov 2005 18:26:25 +0100, Artur S. wrote:
>
>> Witam
>> Program napisany w VB.NET, WinForms. Uruchomienie jednej z funkcji
>> powoduje zwiększenie zajętości pamięci przez program. Uruchomienie tej
>> funkcji 40 razy powoduje zajętość w okolicach 1GB (podglądam to
>> Menedżarem zadań w XP), a tego zaakceptować nie mogę. Uruchomienie
>> GC.Collect() nic nie daje.
>> Funkcja ta tworzy obiekt (obiekt1), który tworzy obiekty, które tworzą
>> obiekty i tak kilka poziomów. Refencje na obiekty trzymane są w
>> HahTable, albo w zmiennych .
>> Dopisałem funkcję, która robi:
>> hTab = nothing 'hTab to hahstable
>> i wywołuję ją zanim zrobię obiekt1 = nothing.
>> Po takiej operacji program potrzebuje mniej pamięci, a wykonanie
>> GC.Collect() zwalnia część pamięci. Ale nadal nie wszystko.
>> Jak mogę rozwikłać tą sytuację? Czy przypisanie hTab = nothing mam być
>> rozwiązaniem? Przecież mamy GC, który miał to wszystko załatwiać.
>> Czy ktoś korzystał z: http://www.scitech.se/memprofiler/ ?
>> A znacie może jakieś darmowe narzędzia, które mi pomogą?
>>
>> Pozdrawiam
>> Artur S.
>
> Wiszą ci gdzieś referencje do obiektów - i nic na to nie poradzisz.
> hTab=nothing pomaga - ale pamiętaj że GC jest niedeterministyczny
>
> Wiesz - GC nie zabezpieczy cię przed przeciekiem pamięci w sensie np.
> listy
> do której tylko dodajesz elementy a nigdy nie usuwasz....
> Stąd mem profiler się przydaje. Ja się bawiłem CLR Profiler (do
> ściągnięcia
> z MSDN), Borland OptimizeIt (ajjjj - no działa - to można powiedzieć ;) )
> Fajny jest QATime - ale kosztowny lekko
> No i masz profilera w VS2005...
> --
> Pozdrawiam,
> Tomasz Kopacz
Technical Details
Message-ID:
<dkblg7$hq$1@nemesis.news.tpi.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!newsfeed.silweb.pl!newsfeed.tpinternet.pl!nemesis.news.tpi.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mailReferences:
<dkassr$466$1@atlantis.news.tpi.pl> <caqbkd3ad60t$.dlg@fdsvzxcc.rtb.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!newsfeed.silweb.pl!newsfeed.tpinternet.pl!nemesis.news.tpi.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail From: "Andrzej J. Turowicz" <at@buchalter.com.pl.BEZ_SMIECI> Newsgroups: pl.comp.lang.vbasic Subject: Re: .NET problemy z pamięcią Date: Thu, 3 Nov 2005 01:25:38 +0100 Organization: tp.internet - http://www.tpi.pl/ Lines: 74 Message-ID: <dkblg7$hq$1@nemesis.news.tpi.pl> References: <dkassr$466$1@atlantis.news.tpi.pl> <caqbkd3ad60t$.dlg@fdsvzxcc.rtb.com> NNTP-Posting-Host: 80.51.98.81 X-Trace: nemesis.news.tpi.pl 1130977607 570 80.51.98.81 (3 Nov 2005 00:26:47 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Thu, 3 Nov 2005 00:26:47 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.2670 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670 X-RFC2646: Format=Flowed; Original MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit