aspnet_wp.exe memory problem

Discussion in 'ASP .Net' started by EDom, Oct 5, 2005.

  1. EDom

    EDom Guest

    Hi,

    I have aspnet_wp.exe with increasing on every postback and not every revisit
    to any page. Even if I clear session and close the browser it remains in the
    memory. I have only one connection object and it is closed always as I have
    it under try catch, and all my variables are disposed at the end of each
    function. What could be the issue??

    Regards,
    Vineet
     
    EDom, Oct 5, 2005
    #1
    1. Advertisements

  2. EDom

    Jon Guest

    This is normal behaviour, unless it is causing you a problem.
    ..Net usually grows and grows until garbage collection comes and cleans it
    up.
     
    Jon, Oct 5, 2005
    #2
    1. Advertisements

  3. EDom

    Mr Newbie Guest

    You can force a collection with the GC.Collect() Method. But you should not
    need this most of the time.
     
    Mr Newbie, Oct 5, 2005
    #3
  4. EDom

    Jon Guest

    Jon, Oct 5, 2005
    #4
  5. EDom

    EDom Guest

    I get Server Error : Application cannot accept anymore requests.
    I have to go to task manager kill the process and then all is fine.

    Regards,
     
    EDom, Oct 5, 2005
    #5
  6. Not everything in .Net cleans itself up. Are you closing all of your
    database connections?

    --
    HTH,

    Kevin Spencer
    Microsoft MVP
    ..Net Developer
    Big things are made up of
    lots of little things.
     
    Kevin Spencer, Oct 5, 2005
    #6
  7. If you really want to know what's going on, you should attach Windbg to the
    process, load the SOS extension, and have a look at what's in memory.

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/jdni_ch01.asp

    About three quarters of the way down, you'll see what I'm talking about.

    --
    Jim Cheshire
    JIMCO Software
    http://www.jimcosoftware.com

    FrontPage add-ins for FrontPage 2000 - 2003
     
    JIMCO Software, Oct 5, 2005
    #7
  8. Juan T. Llibre, Oct 5, 2005
    #8
  9. EDom

    Mr Newbie Guest

    From the same post . . . . . .

    # re: When to call GC.Collect()
    Monday, November 29, 2004 4:02 PM by Darren Oakey
    hmm.... I would disagree...

    how about rule1: use GC.collect often and with a vengeance! :)

    In my experience, the .net GC is a piece of **** and shouldn't be trusted.
    We have found a number of production bugs that have been solved by a single
    introduction of GC.Collect.

    try it - make any batch routine that say - traverses your disk, opens each
    file and computes a checksum, and run it with task manager open - it's quite
    an eye-opener. The memory just goes up... and up... and up...

    Now, insert the lines GC.Collect(), GC.WaitForPendingFinalizers() after
    processing each file. Your job will run _quicker_, because the system isn't
    continuously allocating memory, and the memory usage of your program will
    remain constant.

    I would say

    rule 1: Use GC.Collect at the end of any major "operation", or any form
    finishing

    rule 2: In any loop situation, always follow it with
    GC.WaitForPendingFinalizers

    rule 3: explicitly dispose anything that it's possible to dispose - to a
    large extent, pretend the GC doesn't exist, and you are in an old language.
     
    Mr Newbie, Oct 5, 2005
    #9
  10. JIMCO Software, Oct 5, 2005
    #10
  11. In my experience, the .net GC is a piece of **** and shouldn't be trusted.
    You need to read up on Garbage Collection. The .Net platform uses the best
    Grabage Collection of any object-oriented software development platform,
    better than Java, better than anything else.

    Individual personal experiences don't make for reliable data. Statistics do.
    Chances are, you're playing fast and loose with your memory management.
    Garbage Collection is not a substitute for good memory management. I have
    heard many stories of, for example, apps that ate up all the system memory
    by reassigning strings without restraint. A string is an immutable array of
    char. When you reassign it (by any number of methods, including
    concatenation), you create a new array the size of the new string, and the
    old string is discarded. Concatentaion is almost worse than reassignment. It
    throws both source strings away and replaces them with a single array that
    is the sixe of both the original strings combined. This is why the
    StringBuilder class was developed.

    There are many ways to be irresponsible with memory.
    This sounds like one of them. Do you realize how many files are on a
    typical Operating System these days? Do you know how expensive it is to use
    IO, much less open a file? that is why the CLR includes classes like the
    FileInfo and DirectoryInfo classes.

    Like anything else, as good as it is, the .Net Platform can be (and often
    is) abused by those who are either too lazy or too ignorant to use it
    correctly. Nothing in this world can withstand literally anything you throw
    at it. Why, it is even possible to destroy a monumental structure like the
    World Trade Center, if you just fly a fully-loaded commercial airliner into
    it.

    --
    HTH,

    Kevin Spencer
    Microsoft MVP
    ..Net Developer
    Big things are made up of
    lots of little things.
     
    Kevin Spencer, Oct 5, 2005
    #11
  12. EDom

    Mr Newbie Guest

    First try and read the post accurately, then you would have seen that I was
    highlighting the opinion of another person in a post above, not my own.

    I made no opinion here on GC, so get off your speakers box and stop
    evangelising to the wrong person.

    Mr N.
     
    Mr Newbie, Oct 5, 2005
    #12
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.