CyberNotes
Time Saving Tuesday

Process Explorer is a popular application put out by Microsoft that provides many more details regarding running processes than the standard Task Manager. It has a lot more control over how the processes are organized, and it has won the hearts of many power users out there.

We’ve already shown you how to replace the Task Manager with Process Explorer, and now we want to answer a highly asked question of our readers: how do you display memory usage in Process Explorer? By default Process Explorer doesn’t show any memory usage information, but before we get into that we need to clarify what the two main types of memory usage are.

Process Explorer Memory

–Types of Memory Usage–

There are two main types of memory usage: working set and private working set. The private working set is the amount of memory used by a process that cannot be shared among other processes, while working set includes the memory shared by other processes.

That may sound confusing, so let’s try to simplify it a bit. Lets pretend that there are two kids who are coloring, and both of the kids have 5 of their own crayons. They decide to share some of their crayons so that they have more colors to choose from. When each child is asked how many crayons they used, both of them said they used 7 crayons, because they each shared 2 of their crayons.

The point of that metaphor is that one might assume that there were a total of 14 crayons if they didn’t know that the two kids were sharing, but in reality there were only 10 crayons available. Here is the rundown:

  • Working Set: This includes all of the shared crayons, so the total would be 14.
  • Private Working Set: This includes only the crayons that each child owns, and doesn’t reflect how many were actually used in each picture. The total is therefore 10.

This is a really good comparison to how memory is measured. Many applications reuse code that you already have on your system, because in the end it helps reduce the overall memory consumption. If you are viewing the working set memory usage you might get confused because all of your running processes might actually add up to more than the amount of RAM you have installed, which is the same problem we had with the crayon metaphor above. Naturally the working set will always be larger than the private working set.

–Windows Task Manager–

In Windows Vista you can customize which type of memory usage is shown in the Task Manager (Shift+Ctrl+Esc), which by default shows the private working set memory usage. To change this you can go to View -> Select Columns, and then tick what you want to display: Memory – Working Set and/or Memory – Private Working Set.

Task Manager Columns 

–Process Explorer–

Process Explorer, which can be setup to replace the Task Manager, doesn’t show any memory usage stats by default. They can be enabled by going to View -> Select Columns -> Process Memory, and then ticking Working Set Size and/or WS Private Bytes. The WS Private Bytes is what the Windows Task Manager uses by default in Vista, and it’s what you’ll want to use if you want it to show similar stats.

Process Explorer Columns

There Are 15 Comments

  1. How do these two types of memory use compare to the “Mem Usage” value visible in the Windows 2000/2003 Task Manager?

  2. Nice article.
    @Bruce>I know “mem usage” sidebar gadgets in Vista get the private working one, like task manager does as mentionned above. I suppose it’s the same in w2000?
    Usefull to have the choice to diplay both in process explorer (I like it).

  3. Yes very nice article. I’ve always been using the ‘Working Set Size’ and ‘Peak Working Set Size’ in Process Explorer, now I know better. But it’s unfortunate that there is no private peak working set option, unless I’m overlooking it.

  4. Bruce wrote:
    How do these two types of memory use compare to the “Mem Usage” value visible in the Windows 2000/2003 Task Manager?

    If I remember correctly it is just using the working set, not the private working set. You could verify this by downloading the Process Explorer and displaying both, and then matching it up to the values in the Task Manager. That’s pretty simple to do considering you don’t have to install Process Explorer.

    Ian Cammarata wrote:
    Yes very nice article. I’ve always been using the ‘Working Set Size’ and ‘Peak Working Set Size’ in Process Explorer, now I know better. But it’s unfortunate that there is no private peak working set option, unless I’m overlooking it.

    No, unfortunately there is no peak monitoring for the private working set. I was a bit bummed by that as well.

  5. Nice article..Thanks!

  6. So whats Commit size in relation to this? I thought it was the process size, including any that had been swapped out?

    If I want to report the total amount of space my process is using which should I use?

  7. The example gets me confused! Each kid owns 5 crayons, shares 2 of them. The non-shared part is only 3 crayons. If the private bytes is not shared, then it should be 3 crayons for each kid, why 5 as you indicated here. Each kid owns 5, among them non-shared part is only 3. Can you clarify my confusion?

  8. @ Harry, the “Private” label may be a bit confusing but it is not meant to represent the exclusively private parts of the memory. It represents how much memory a program is using excluding memory that is shared by other programs.

    Building on the articles example: The children may be using 7 crayons each (in total), but when they decide to pack up and go home they take their own (private) 5 crayons with them and no the two that the other kid shared with him.

  9. Very nice job explaining some of the memory values reported by applications that monitor the computer resources. Since task manager is one of the main mini-applications used your examples, there are a few terms used in task manager to express memory that you have not commented on. Perhaps it is a matter of semantics, i.e., the same “value” that you expressed but you may have used a different “term” for name..

    My examples include:

    “Commit charge” and its use in the ratio given on the process page of Task Manager

    ” Commit Charge: 1190M / 5412M ”

    ” Kernel Memory

  10. I prefer AnVir Task Manager

  11. Hi! I’m not an expert… I hope you can help me in understanding the following mem usage issue. I made a comparison with my colleague (same windows xp, connected to the same company net, with the same configuration)and the mem usage of the same processes is much bigger in my PC then his one.
    i.e. explorer.exe (no windows open) 24000 vs 127000
    acretray.exe 333 vs 3201
    etc.

    Thanks Ciao

  12. @KC, you said to Harry:
    ———————–
    @ Harry, the “Private” label may be a bit confusing but it is not meant to represent the exclusively private parts of the memory. It represents how much memory a program is using excluding memory that is shared by other programs.

    Building on the articles example: The children may be using 7 crayons each (in total), but when they decide to pack up and go home they take their own (private) 5 crayons with them and no the two that the other kid shared with him.
    ———————–

    More precisely, the “Private” label is not meant to represent the exclusively private parts of the memory. It represents how much memory a program is using excluding memory that other programs SHARE WITH IT.

    In other words, a program may be sharing some bytes of its “Private Working Set” with OTHER programs, but that STILL counts as part of its TOTAL “private bites” – what does NOT count are the bytes OUTSIDE of its “Private Working Set” that other programs SHARE WITH IT.

    Good analogy, suppose Randy and KC each have five crayons. BEFORE we come together to pool our resources, we each have FIVE “private crayons”. AFTER we leave and go home, we each have FIVE “private crayons”. But while we are being good friends and SHARING together:

    KC still has five crayons that belong only to him, and which he will TAKE HOME with him when done. Ditto with me, Randy. So, if I SHARE two crayons with KC,those don’t count as part of his “five private crayons”, because he won’t get to keep them when he goes home. Likewise if KC my buddy SHARES two crayons with me, little Randy, those don’t count as part of my “five private crayons”, because I won’t get to keep them when he goes home.

    I think this analogy reflects the DYNAMIC nature of memory management: Because, I cannot count on KC my buddy’s two crayons to be SHARED with me forever. For example, KC’s parents may call him home for supper, while I want to KEEP COLORING. Likewise the “shared memory” that is granted by the memory manager to me from other programs, might, in the process of more CPU cycles, be “called home for supper” by the memory manager.

    But if I, as a program, wish to “keep coloring” – keep on running – then I will be left with my original “Private Bytes”. So, ‘Private’ means, only the memory that belongs to me and I KEEP, no matter if KC gets called home for supper before I wish to cease coloring: no matter if I as a program wish to keep on running after those previously “shared bytes” (shared crayons) are GONE because KC’s parents (the memory manager) called KC home for supper, and KC took HIS private crayons (private bytes) back home with him.

Leave Your Comment


Message is the only required field.
Emails are not published.