Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


ASPNet_wp.exe äter minne

Postades av 2004-10-26 17:50:01 - Peter Ilis, i forum asp.net generellt, Tråden har 14 Kommentarer och lästs av 554 personer

Hej!
Jag har en web service som skickar ut filer till klienter. Problemet är att aspnet_wp.exe ökar stadigt i minnesanvändning. Den släpper alltså inte ifrån sig alla resurser. Koden jag använder för att skicka filer är följande:
<code>
Dim close As Boolean = False
Dim fs As FileStream
Dim lngLen As Long
Dim abytBuffer() As Byte
Try
fs = File.Open(strFile, FileMode.Open, FileAccess.Read)
lngLen = fs.Length
ReDim abytBuffer(CInt(lngLen - 1))
fs.Read(abytBuffer, 0, CInt(lngLen))
Return abytBuffer
Catch exp As Exception
Return Nothing
Finally
If Not fs Is Nothing Then
fs.Close()
End If
fs = Nothing
abytBuffer = Nothing
GC.Collect()
End Try
</code>
Nån som ser någonting konstigt eller har några tips?

/Peter


Svara

Sv: ASPNet_wp.exe äter minne

Postades av 2004-10-27 00:37:51 - Pelle Johansson

Testa att ta bort GC.Collect() och se om det gör någon skillnad.


Svara

Sv: ASPNet_wp.exe äter minne

Postades av 2004-10-27 09:14:56 - Peter Ilis

Den har jag lagt till i efterhand, samm fel både innan och efter jag lade till den.

Kan det vara något att en connection eller någon slags 'state' ligger kvar från användaren. Kanske att den cachar något?


Svara

Sv: ASPNet_wp.exe äter minne

Postades av 2004-10-27 09:45:06 - Jenny Månsson

Körs verkligen Finally när du har en return i koden? Har du kollat att du verkligen kommer dit?


Svara

Sv: ASPNet_wp.exe äter minne

Postades av 2004-10-27 11:08:11 - Peter Ilis

Jo.. Finally körs väl alltid? Om finally inte körs har jag ju ingen möjlighet att sätta returnerade variabler till nothing?


Svara

Sv: ASPNet_wp.exe äter minne

Postades av 2004-10-27 11:40:13 - Pelle Johansson

När du får exception kan du även sätta alla objekten till nothing - eller vet du att den aldrig hamnar där?
Finally körs inte om du skriver return ... - då hoppar den ur på en gång.


Svara

Sv: ASPNet_wp.exe äter minne

Postades av 2004-10-27 12:23:28 - Andreas Håkansson

Angående att sätta saker till Nothing. Det är sällan som ni behöver tänka på det mer med anledning av att variabler har scope. Deklarerar du variabler inne i en metod så när du lämnar den metoden så hamnar de ur scope och alla referenser till dessa variabler försvinner (med anledning av att den stack framen poppas från stacken). Märk väl att detta inte behöver vara sant om du skickat vidare variabler ByRef (ref och out i C#), då det kan finnas aktiva referenser till minnesarean på andra ställen.

När Garbage Collectorn sedan kör så hittar den minnet och samtidigt ser den att det inte finns några aktiva referenser till det - voilá så kan det minner återanvändas.


Svara

Sv: ASPNet_wp.exe äter minne

Postades av 2004-10-27 12:25:01 - Andreas Håkansson

Kan även tillägga att Finally är tänk att användas för att rensa upp evt resurser man använder sig av, så som strömmar, connections, filer etc. och inte för att "tömma variabler".


Svara

Sv: ASPNet_wp.exe äter minne

Postades av 2004-10-27 12:35:41 - Jenny Månsson

Kontrollera med en breakpoint ifall du faktiskt hamnar i finally. Tror inte att du gör det eftersom du har en return. Finally är till för att städa upp om ett exception triggas.

Du gör en fs.Close() i Finally så den bör du kanske kopiera upp från finally innan du gör en return. Men att också ha den kvar i finally om du skulle få ett exception innan du hinner till close.


Svara

Sv: ASPNet_wp.exe äter minne

Postades av 2004-10-27 12:36:05 - Andreas Håkansson

Jenny: Jo visst körs Finally, prova skall du se :)

Peter: Va du du skulle kunna göra är att köra Flush metoden på ditt objekt innan du stänger det, men jag tror inte att det är lösningen. En varning - kör (nästan) aldrig GC.Collect själv, det är otroligt sällan som det är befogat =) Och vad menar du med att den växer? Hur mycket snackar vi om ? Någon megabyte? Oändligt? Vad kör du på för maskin ?


Svara

Sv: ASPNet_wp.exe äter minne

Postades av 2004-11-29 12:47:14 - Peter Ilis

Det var väl det jag trodde om Finally. :)

Flush kan jag prova. Den växer bra mycket, kan gå från 40 till 500mb (oändligt) och körs på en 2000-server med mycket ram.


Svara

Sv: ASPNet_wp.exe äter minne

Postades av 2004-11-30 03:06:44 - Jesper Holmberg [msft]

Tre saker,

1) FileStream implementerar IDisposable, och du bör alltså anropa fs.Dispose() i Finally. Jag vet inte om detta orsakar minnesproblem i just det här fallet, men risken finns.

2) En av finesserna med skräpinsamlaren i .NET är att den körs "vid behov". Om du har en dator med mycket RAM och där inget annat program tävlar om minne, kommer skräpinsamlaren att köras sällan. Detta är avsiktligt. Mao, kanske ser det mysko ut att allt minne käkas upp av asp.net, men om detta inte i sig orsakar problem någon annanstans är allt normalt.

3) En kollega bloggade idag en rekommendation om när man bör anropa GC.Collect() själv: http://blogs.msdn.com/ricom/archive/2004/11/29/271829.aspx. Kort och gott, "Rule #1: Don't."


Svara

Sv:ASPNet_wp.exe äter minne

Postades av 2004-11-30 08:52:22 - Mikael Wedham

För att klargöra:

a) Finally körs ALLTID!

<code>
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Integer
Dim b As Integer

Try
a = b / 0
Catch ex As Exception

MessageBox.Show("FEL")

'Oavsett vilket man skrivit, så kommer "slut..." att visas INNAN programmet avslutas.
Return
Exit Sub
Application.Exit()

Finally

MessageBox.Show("slut...")

End Try
End Sub

</code>

b) Har man mycket RAM så tar programmet mycket RAM. GarbageCollectorn går igång på begäran, inte tidsstyrt. Finns det minne som applikationen kan allokera, så gör den det. Börjar det bli klent med minne kvar, så drar den igång en GC-runda. Det kan dröja! Jag testade att skapa 10 objekt som sedan kastades. De hade fortfarande inte blivit hanterade efter lunch. Direkt när jag stängde programmet, så kördes/förstördes alla 10.

/micke


Svara

Sv: ASPNet_wp.exe äter minne

Postades av 2004-11-30 12:57:24 - Peter Ilis

Tack för alla bra svar!

Dispose ska jag testa.

ASP.net-processen har vid flera tillfällen tagit så pass mycket minne att servern slöats ner. Därför verkar inte gc.collect vara problemet (den borde köras men det hjälper inte).

Ska göra om file.open till filestream och köra dispose och se om det hjälper.

Har också fått ett tips om att köra starta upp en tråd vid startpunkten på web-applikationen med while-slinga och gc.collect med en viss tidsintervall. Kanske en idé om man är rädd för minnesläckor och inte tycker att garbage-collectorn körs tillräckligt ofta..?


Svara

Sv:ASPNet_wp.exe äter minne

Postades av 2004-11-30 15:29:28 - Jesper Holmberg [msft]

Jag skulle inte rekommendera att köra en tråd som anropar GC.Collect(). Problemet ligger med all säkerhet någon annanstans.

Tips för att felsöka:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenetchapt17.asp
eller varför inte
http://www.google.com/search?hl=en&q=site%3Amicrosoft.com+troubleshoot+asp.net+performance


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 606
27 953
271 705
5 907
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies