Memory leak i vb.net kode

Tags:    vb.net memory-leak

User
Bruger #169 @ 08.09.11 07:25
Jeg har lavet et lille program, som viser og rotere mellem forskellige web sider. Der bliver hentet url'er og tiden for hvor længe siden skal vises, ud fra en fil.

Når programmet har kørt i ca. en dags tid opstår der en memory leak og programmet fejler. Ud for
Fold kodeboks ind/udVBDotNet kode 
med fejlen "Ressourcen er i brug"
Er her nogen der kan fortælle mig hvor fejlen ligger og om der evt. var forbedringsforslag til koden?

Fold kodeboks ind/udVBDotNet kode 




7 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Jeg er ikke vb.net ekspert, så betragt dette som et skud i tågen.

Hvad med at bruge Navigate metoden, istedet for at sætte URL'en?
Fold kodeboks ind/udVBDotNet kode 




Henter du xml filen også forfra ind i mellem ? Synes ikke det virker sådan, men kig uanset hvad på dispose funktionen.



User
Bruger #169 @ 08.09.11 14:29
Jeg er ikke vb.net ekspert, så betragt dette som et skud i tågen.

Hvad med at bruge Navigate metoden, istedet for at sætte URL'en?
Fold kodeboks ind/udVBDotNet kode 


Hvad er forskellen på de to metoder?


Henter du xml filen også forfra ind i mellem ? Synes ikke det virker sådan, men kig uanset hvad på dispose funktionen.


Nej, jeg henter kun xml'en ind én gang.



Indlæg senest redigeret d. 08.09.2011 14:30 af Bruger #169
Lyder ikke som memory leak, bruger den mange resourcer da ? Det er ikke noget at gøre med, at du har en, der har et meget langt, eller meget kort interval, som giver problemer med din timer ?



Indlæg senest redigeret d. 08.09.2011 14:43 af Bruger #10576
User
Bruger #169 @ 08.09.11 14:47
Lyder ikke som memory leak, bruger den mange resourcer da ? Det er ikke noget at gøre med, at du har en, der har et meget langt, eller meget kort interval, som giver problemer med din timer ?


Nej alle er sat til 10 sek.

Jeg har i min fejlsøgning haft perfmon kørende med

.NET CLR Hukommelse (_GLOBAL_)\Antal bytes i alle heaps
.NET CLR Låse og Tråde (_GLOBAL_)\Antal aktuelle logiske tråde
Process (_TOTAL)\Private byte

Process stiger konstant. De to andre bliver rimelige konstante. Det skulle betyde at der er en Unmanaged memory leak.



Indlæg senest redigeret d. 08.09.2011 15:00 af Bruger #169
Så har jeg fået den til at spille i c# så prøver jeg lige at se om jeg kan give et bud.. Er nok ikke lige til :=)
Virker udmiddelbart fint og kan godt se det ikke er voldsomt forbrug - men at det støt stiger...

Jeg fandt denne tråd:
http://social.msdn.microsoft.com/Forums/en-US/ieextensiondevelopment/thread/88c21427-e765-46e8-833d-6021ef79e0c8

Hvor en foreslår at tilføje
Fold kodeboks ind/udCSharp kode 


til klasse definationen.

og så kan du hvor du sætter url'en kalde
Fold kodeboks ind/udCSharp kode 


Det ser udmiddelbart ud til at virke her. Jeg har dog ændret til at den initialiserer et nyt webbrowser objekt og disposer det gamle, men ved ikke om dette gør nogen forskel, gad ikke lige ændre tilbage for at teste :=)

Tager vist fortsat flere resourcer over tid, men nu tager det altså lang tid før den vil komme højt op tror jeg.



Indlæg senest redigeret d. 08.09.2011 17:28 af Bruger #10576
User
Bruger #169 @ 09.09.11 07:17
Så har jeg fået den til at spille i c# så prøver jeg lige at se om jeg kan give et bud.. Er nok ikke lige til :=)
Virker udmiddelbart fint og kan godt se det ikke er voldsomt forbrug - men at det støt stiger...

Jeg fandt denne tråd:
http://social.msdn.microsoft.com/Forums/en-US/ieextensiondevelopment/thread/88c21427-e765-46e8-833d-6021ef79e0c8

Hvor en foreslår at tilføje
Fold kodeboks ind/udCSharp kode 


til klasse definationen.

og så kan du hvor du sætter url'en kalde
Fold kodeboks ind/udCSharp kode 


Det ser udmiddelbart ud til at virke her. Jeg har dog ændret til at den initialiserer et nyt webbrowser objekt og disposer det gamle, men ved ikke om dette gør nogen forskel, gad ikke lige ændre tilbage for at teste :=)

Tager vist fortsat flere resourcer over tid, men nu tager det altså lang tid før den vil komme højt op tror jeg.


Jeg giver det et forsøg. Tusinde tak for dit bud :D



t