Avatar billede Slettet bruger
24. september 2003 - 13:45 Der er 2 kommentarer og
1 løsning

ASP.NET og Hukkomelsesstyring

Når mit ASP.NET site kører, så stiger hukommelsesforbruget. Især når serveren er belastet ser det ud til at forbruget stiger mere end aspnet processen kan nå at frigive.

Jeg har hørt at ASP net processen genstarter når den har forbrugt 60% af den tilgængelige hukommelse på maskinen. Er det sandt?

Hvad kan jeg gøre for at frigive noget af den hukommelse som aspnet processen akkumulerer?
Avatar billede guidmaster Nybegynder
24. september 2003 - 20:23 #1
Hej,

Mht. at ASP net genstarter når der bliver brugt 60% er dette noget du selv kan ændre. Dette gør du inde i machine.config

For at frigive hukommelse er det jo vigtigt at du får ydet op i dine objekter. Hvor meget stiger din hukommelses forbrug ?
Avatar billede odegaard Nybegynder
24. september 2003 - 21:58 #2
Så vidt jeg er orienteret er det IIS6 der er i stand til at genstarte servicen (og ikke ASP.NET).
Husker du at Dispose de objekter der skal dette? (som fx. Bitmaps)
Avatar billede Slettet bruger
01. august 2005 - 10:47 #3
Svarene er mindre ligetil end som så. Det er rigtigt at Microsoft anbefaler max. 1.2gb memory eller 60% som den maksimale memory til 1 asp.net proces.

Det er også meningen at memory forbruget skal stige igennem en asp.net proces' levetid og det er så op til asp.net at kalde garbage collectoren når grænsen nåes.

Men asp.net's managed heap er mere kompliceret end som så. Hvis man troede at man ikke længere skal bekymre sig om memory styring fordi der er en garbage collector, så skal man tro om igen.

Her et lille udpluk af de ting man skal være klar over:

Asp.net's managed heap er inddelt i 3 levels, og alt efter hvor store og hvor længe objekterne lever vil de blive placeret i en level. Objekter placeret i den nederste level kan frigives meget let, mens objekter placeret i den øverste kategori bliver aldrig frigivet.
Derfor er det vigtigt at man sørger for at frigive store objekter så hurtigt som muligt, for at de ikke ender i den øverste kategori.

Selve garbage collectoren kaldes i ny og næ, med mindre der ikke er clock cycles til at kalde den. ASP.net bryder ikke ind og tømmer memory hvis maskinen knokler løs. Derfor kan man opleve outofmemory problemer på websites som bruger 100% cpu. Dette er by-design iflg. Microsoft.

Strenge kan konkateneres med + (string myString = "brian" + " " + "caos";). Dette kan man godt gøre med små strenge, og op til ca. 5 af slagsen, men skal man konkatenere større strenge skal man bruge System.Text.StringBuilder.

Håber dette lille indlæg kan hjælpe andre med memory problemer.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester