Maoni's WebLog

CLR Garbage Collector

  • Maoni's WebLog

    Using GC Efficiently – Part 2

    • 66 Comments
    In this article I’ll talk about different flavors of GC, the design goals behind each of them and how they work differently from each other so you can make a good decision of which flavor of GC you should choose for your applications. Existing GC flavors...
  • Maoni's WebLog

    Using GC Efficiently – Part 1

    • 69 Comments
    So the goal here is to explain the cost of things so you can make good decisions in your managed memory usage – it’s not to explain GC itself - it’s to explain how to use it. I assume most of you are more interested in using a garbage...
  • Maoni's WebLog

    GC Performance Counters

    • 50 Comments
    There are many .NET Memory Performance Counters and this is meant to give you some guidelines in interpreting the counter data and how to correlate them. This assumes you have a basic understanding of GC. First thing you may want to look at is “% Time...
  • Maoni's WebLog

    Understand the problem before you try to find a solution

    • 18 Comments
    So far I’ve never written a blog entry that gives out philosophical advices on doing performance work. But lately I thought perhaps it’s time to write such an entry because I’ve seen enough people who looked really hard at some performance counters (often...
  • Maoni's WebLog

    64-bit vs 32-bit

    • 50 Comments
    As 64-bit machines become more common, the problems we need to solve also evolve. In this post I’d like to talk about what it means for the GC and the applications’ memory usage when we move from 32-bit to 64-bit. One big limitation of 32-bit is...
  • Maoni's WebLog

    Using GC Efficiently – Part 3

    • 28 Comments
    In this article I’ll talk about pinning and weak references – stuff related to GC handles. (I was planning on talking about finalization in this part of the “Using GC Efficiently” series but since I already covered it in pretty much detail in one of my...
  • Maoni's WebLog

    Using GC Efficiently – Part 4

    • 16 Comments
    In this article I’ll talk about things you want to look for when you look at the managed heap in your applications to determine if you have a healthy heap. I’ll touch on some topics related to large heaps and the implications you want to be aware of when...
  • Maoni's WebLog

    So, what’s new in the CLR 2.0 GC?

    • 18 Comments
    Certainly that’s one of the most frequently asked questions I get (at the PDC too!). So since PDC already happened I can tell the rest of you about the new stuff happened in GC in CLR 2.0. The slides can be downloaded here . And I will be referring to...
  • Maoni's WebLog

    So, what’s new in the CLR 4.0 GC?

    • 24 Comments
    PDC 2008 happened not long ago so I get to write another “what’s new in GC” blog entry. For quite a while now I’ve been working on a new concurrent GC that replaces the existing one. And this new concurrent GC is called “background GC”. First of all...
  • Maoni's WebLog

    Large Object Heap

    • 20 Comments
    LOH (Large Object Heap) contains objects that are 85,000 bytes or bigger (there’s also some objects that are less than 85,000 bytes that are allocated on the LOH by the runtime itself but usually they are very small and we’ll ignore them for this discussion...
  • Maoni's WebLog

    Clearing up some confusion over finalization and other areas in GC

    • 21 Comments
    In the WinDev conference that I just went to, there seems to be some confusion over finalization (such as why it even exists and etc) and other areas. I hope the following will clear up that confusion. If not, let me know. Finalization 1) Why we have...
  • Maoni's WebLog

    So, what's new in the CLR 4.5 GC?

    • 2 Comments
    Last time I posted a "So, what's new" entry was when we release 4.0 ~3 years ago (can't believe it's already been that long..). Now I get to talk about what's new in the 4.5 GC. Actually I just talked about this with Channel 9 and here's the link to the...
  • Maoni's WebLog

    When memory is running low…

    • 16 Comments
    When I say memory I mean physical memory. Let’s assume that you have enough virtual memory space. When the physical memory gets low you may start getting OOMs or start paging. You can experiment and see how you can avoid getting into the low memory...
  • Maoni's WebLog

    I Am a Happy Janitor – Part 1: Finding garbage

    • 21 Comments
    Indeed what I do is very much like the job of the janitors – like the ones who clean your building, or janitors you see at a food court, or yourself when you are taking care of garbage at your house. Doubtful you say? Let me prove it to you. Finding...
  • Maoni's WebLog

    Difference Between Perf Data Reported by Different Tools – 4

    • 6 Comments
    .NET CLR Memory\% Time in GC counter and !runaway on thread(s) doing GC . The 2 common ways people use to look at the time spent in GC are the % Time in GC performance counter under .NET CLR Memory, and the CPU time displayed by the !runaway debugger...
  • Maoni's WebLog

    Tools that help diagnose managed memory related issues

    • 7 Comments
    I was writing an internal wiki page on performance and thought this info is useful to many external readers as well so here it goes. vadump is a good start. It’s an mstools tool – meaning you can find it on your NT CD under bin\mstools. You can take a...
  • Maoni's WebLog

    He’s live… he’s live not… he’s live…

    • 10 Comments
    I was making some code changes today and thought this was interesting to share. As you know, the WeakReference class has a getter and a setter method to get and set the Target which is what the weakref points to. See Using GC Efficiently – Part 3 for...
  • Maoni's WebLog

    My application seems to hang. What do I do? – Part 1

    • 16 Comments
    Defining “hang” is a good place to start. When people say “hang” they could mean all sorts of things. When I say “hang” I mean the process is not making progress – the threads in the process are either blocked (eg. deadlocked, or not scheduled because...
  • Maoni's WebLog

    New MSDN Article - Investigating Memory Issues

    • 10 Comments
    We have a new MSDN article out in the November issue that talks about investigating managed memory issues. http://msdn.microsoft.com/msdnmag/issues/06/11/CLRInsideOut/default.aspx?loc=en Take a look and let me know what you think. Oh, and it...
  • Maoni's WebLog

    Workstation GC for server applications?

    • 7 Comments
    In Using GC Efficiently – Part 2 I talked about different flavors of GC that exist in the CLR and how you choose which flavor is good for your applications, and I said that the Server GC flavor is designed for server applications. As with any performance...
  • Maoni's WebLog

    Correlating the output of !eeheap -gc and !address

    • 15 Comments
    !address is a very powerful debugger command. It shows you exactly what your VM space looks like. If you already got the output from the !sos.eeheap -gc command (refer to this article for usage on sos), for example: 0:003> !eeheap -gc Number of...
  • Maoni's WebLog

    Debugging with the Right Tools

    • 10 Comments
    Wow, it’s been almost a year since I last blogged J We just shipped CLR V4.0. Yay! An internal email thread prompted me to write this blog entry – one very powerful tool I wanted to point out when you need to debug/investigate issues is your debugger...
  • Maoni's WebLog

    Suspending and resuming threads for GC

    • 8 Comments
    First of all, suspension and resumption of threads is not really part of the GC. GC calls functions to do the suspension and the resumption as a service provided in the CLR. Other components in the CLR also use this service such as the debugger implementation...
  • Maoni's WebLog

    Difference Between Perf Data Reported by Different Tools – 3

    • 15 Comments
    Both the !SOS.gchandles command (added in CLR 2.0) and the .NET CLR Memory\# GC Handles counter show you the number of GC handles you have in your process. The # GC Handles counter is one of the rare counters in the .NET CLR Memory category that doesn...
  • Maoni's WebLog

    My application seems to hang. What do I do? – Part 2

    • 8 Comments
    Last time I talked about the hang scenario where your process is taking 0 CPU and the CPU is taking by other process(es) on the same machine. The next scenario is your process is taking 0 CPU and the CPU is barely used by other processes. ...
Page 1 of 2 (38 items) 12