/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Programmets "Mem Usage" i Win2000
Fra : Carsten Madsen


Dato : 15-06-01 22:55

Mit program opretter en masse objekter hvilket kan ses i "Mem Usage" i
Win2000 Windows Task Manager ved at programmet optager mere plads. MEN
hvorfor bliver programmet ikke tilsvarende mindre når jeg Free'er objekterne
igen?

Hvor meget lid skal man sætte til "Mem Usage" når man tjekker om programmet
"lækker" hukommelse? ...og er der en anden måde at tjekke det på?

MVH
Carsten





 
 
FreeAll (16-06-2001)
Kommentar
Fra : FreeAll


Dato : 16-06-01 08:35

Maske skal du Destroy dem??

--
- FreeAll (freeall@freeall.dk <> www.freeall.dk)
"Carsten Madsen" <carstensm@hotmail.com> wrote in message
news:3b2a843a$0$196$ba624c82@nntp01.dk.telia.net...
> Mit program opretter en masse objekter hvilket kan ses i "Mem Usage" i
> Win2000 Windows Task Manager ved at programmet optager mere plads. MEN
> hvorfor bliver programmet ikke tilsvarende mindre nar jeg Free'er
objekterne
> igen?
>
> Hvor meget lid skal man satte til "Mem Usage" nar man tjekker om
programmet
> "lakker" hukommelse? ...og er der en anden made at tjekke det pa?
>
> MVH
> Carsten
>
>
>
>



Thomas Rose (16-06-2001)
Kommentar
Fra : Thomas Rose


Dato : 16-06-01 11:50

Hej "FreeAll" og Carsten,

for det forste gor Free og Destroy metoderne stort set det samme... Free har
den fordel, at metoden forst checker om referencen er nil, og hvis ikke
kaldes Destroy pa denne reference... dvs. man kan godt kalde Free pa en
nil-reference... sa vidt jeg ved anbefales det altid, at man anvender Free.

Mht. Carstens oprindelige sporgsmal tror jeg ikke, at man skal satte sin lid
til Task Manageren hvad angar hukommelsesforbrug... den viser det korrekte
hukommelsesforbrug, men sa vidt jeg ved bliver hukommelse ikke nodvendigvis
deallokeret fra hele processen, nar et objekt nedlagges. Dvs. nedlagger man
et objekt, er det ikke sikkert det afspejler sig i Task Manager'en...
Derimod bruger man ofte selvstandige programmer til at analysere
hukommelses-forbruget i et "hjemmelavet" program - det kan f.eks. vare
TurboPower's Sleuth Codewatch eller BoundsChecker... de giver et meget mere
detaljeret billede af evt. leaks der matte vare, og kan sagar pege direkte
ned i koden hvor disse leaks befinder sig. Desvarre er de to programmer
(Sleuth og BoundsChecker) betalings-software... om der findes tilsvarende
Shareware eller Freeware programmer ved jeg ikke.

Cheers,
Thomas

"FreeAll" <freeall@freeall.dk> wrote in message
news:9ge2po$18e$1@news.cybercity.dk...
> Maske skal du Destroy dem??
>
> --
> - FreeAll (freeall@freeall.dk <> www.freeall.dk)
> "Carsten Madsen" <carstensm@hotmail.com> wrote in message
> news:3b2a843a$0$196$ba624c82@nntp01.dk.telia.net...
> > Mit program opretter en masse objekter hvilket kan ses i "Mem Usage" i
> > Win2000 Windows Task Manager ved at programmet optager mere plads. MEN
> > hvorfor bliver programmet ikke tilsvarende mindre nar jeg Free'er
> objekterne
> > igen?
> >
> > Hvor meget lid skal man satte til "Mem Usage" nar man tjekker om
> programmet
> > "lakker" hukommelse? ...og er der en anden made at tjekke det pa?
> >
> > MVH
> > Carsten
> >
> >
> >
> >
>
>



Claus Chrsitiansen (16-06-2001)
Kommentar
Fra : Claus Chrsitiansen


Dato : 16-06-01 12:00

>>"Carsten Madsen" <carstensm@hotmail.com> wrote in message
>>news:3b2a843a$0$196$ba624c82@nntp01.dk.telia.net...
>> Mit program opretter en masse objekter hvilket kan ses i "Mem Usage" i
>> Win2000 Windows Task Manager ved at programmet optager mere plads. MEN
>> hvorfor bliver programmet ikke tilsvarende mindre nar jeg Free'er
>> objekterne igen?
>>
>> Hvor meget lid skal man satte til "Mem Usage" nar man tjekker om
>> programmet"lakker" hukommelse? ...og er der en anden made at tjekke det
pa?
>>

Jeg ville ikke sætte min lid til det, men derimod bruge nogle af de metoder
der findes i D til at undersøge hukommelsesforbrug.

i.e. showmessage(inttostr(GetHeapStatus.TotalAllocated));

>"FreeAll" <freeall@freeall.dk> wrote in message
>news:9ge2po$18e$1@news.cybercity.dk...
>Maske skal du Destroy dem??

Free er det samme som destroy det verificeres blot at pointeren ikke er null
for der kaldes destroy.

i.e. if p <> null then p.destroy;

/Claus



FreeAll (16-06-2001)
Kommentar
Fra : FreeAll


Dato : 16-06-01 22:49

Jeg tankte nok destroy ikke gav noget, men det kunne vare:)

--
- FreeAll (freeall@freeall.dk <> www.freeall.dk)
"Claus Chrsitiansen" <cch@unipeople.dk> wrote in message
news:80HW6.1870$hi6.251311@news000.worldonline.dk...
> >>"Carsten Madsen" <carstensm@hotmail.com> wrote in message
> >>news:3b2a843a$0$196$ba624c82@nntp01.dk.telia.net...
> >> Mit program opretter en masse objekter hvilket kan ses i "Mem Usage" i
> >> Win2000 Windows Task Manager ved at programmet optager mere plads. MEN
> >> hvorfor bliver programmet ikke tilsvarende mindre nar jeg Free'er
> >> objekterne igen?
> >>
> >> Hvor meget lid skal man satte til "Mem Usage" nar man tjekker om
> >> programmet"lakker" hukommelse? ...og er der en anden made at tjekke det
> pa?
> >>
>
> Jeg ville ikke satte min lid til det, men derimod bruge nogle af de
metoder
> der findes i D til at undersoge hukommelsesforbrug.
>
> i.e. showmessage(inttostr(GetHeapStatus.TotalAllocated));
>
> >"FreeAll" <freeall@freeall.dk> wrote in message
> >news:9ge2po$18e$1@news.cybercity.dk...
> >Maske skal du Destroy dem??
>
> Free er det samme som destroy det verificeres blot at pointeren ikke er
null
> for der kaldes destroy.
>
> i.e. if p <> null then p.destroy;
>
> /Claus
>
>



Carsten Madsen (17-06-2001)
Kommentar
Fra : Carsten Madsen


Dato : 17-06-01 10:22

"Free" tjekker om variablen peger pa et objekt, og kalder sa "Destroy" pa
det. Sadan har jeg da forstaet det, og hvor jeg override'er Destroy kalder
jeg "inherited Destroy" til sidst.

"FreeAll" <freeall@freeall.dk> wrote in message
news:9ge2po$18e$1@news.cybercity.dk...
> Maske skal du Destroy dem??
>
> --
> - FreeAll (freeall@freeall.dk <> www.freeall.dk)
> "Carsten Madsen" <carstensm@hotmail.com> wrote in message
> news:3b2a843a$0$196$ba624c82@nntp01.dk.telia.net...
> > Mit program opretter en masse objekter hvilket kan ses i "Mem Usage" i
> > Win2000 Windows Task Manager ved at programmet optager mere plads. MEN
> > hvorfor bliver programmet ikke tilsvarende mindre nar jeg Free'er
> objekterne
> > igen?
> >
> > Hvor meget lid skal man satte til "Mem Usage" nar man tjekker om
> programmet
> > "lakker" hukommelse? ...og er der en anden made at tjekke det pa?
> >
> > MVH
> > Carsten
> >
> >
> >
> >
>
>



Jan (16-06-2001)
Kommentar
Fra : Jan


Dato : 16-06-01 15:01

In article <3b2a843a$0$196$ba624c82@nntp01.dk.telia.net>,
carstensm@hotmail.com says...
:Mit program opretter en masse objekter hvilket kan ses i "Mem Usage" i
:Win2000 Windows Task Manager ved at programmet optager mere plads. MEN
:hvorfor bliver programmet ikke tilsvarende mindre når jeg Free'er objekterne
:igen?
:
:Hvor meget lid skal man sætte til "Mem Usage" når man tjekker om programmet
:"lækker" hukommelse? ...og er der en anden måde at tjekke det på?
:
:MVH
:Carsten
:
:
:
Prøv at starte Internet Explorer og luk igen.
Du kan se at denne heller ikke frigiver hukommelsen.
Prøv evt. at gøre dette en masse gange, ja og genstart til sidst...

Skal du benytte noget prof. så prøv MemSleuth (søg).

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste