G
Guest
Hello,
Is there someone who can help me to understand the memory usage on a Windows
2000/XP system?
I have the following problem. I am trying to figure out how much memory a
given application needs, independently of where it is really located (working
set or page file).
I would like to be able to draw a picture for my process, showing the
complete 4 GByte address range, showing which addresses/volumes are reserved,
committed and shared and for which purpose.
How much memory is really used, and what is in the page file is not the
question here.
I am using the performance monitor to monitor the memory usages but I can
not figure out how to get the information I need.
According to one source the “\Process(<myprocess>)\Private Bytes†give me
the bytes exclusive committed to <myprocess>, including the used DLL’s. All
located in the virtual memory below address 80000000h (user memory). This is
also what I see when I use the “Process Walkerâ€, however Process Walker shows
only the first 2 GByte and does not give any clue about sharing.
On the other side, I am reading that DLLs are shared amongst the different
processes and are therefore located above address 80000000h (System memory).
The needed memory is not counted in the private bytes. I suspect they are
counted in the \Process(<myprocess>)\Pool Nonpaged Bytes and
\Process(<myprocess>)\Pool Paged Bytes counters amongst with other system
code and resources. But when I compare the working set of my process, it is
bigger than the sum of the private bytes, Pool Nonpaged Bytes and Pool Paged
Bytes of my process which rejects this assumption.
To get more confused, I am also reading that the private bytes do count the
shared DLL’s. So you see, the more I read the more I get confused.
Can someone get my on the right track?
Filip.
Is there someone who can help me to understand the memory usage on a Windows
2000/XP system?
I have the following problem. I am trying to figure out how much memory a
given application needs, independently of where it is really located (working
set or page file).
I would like to be able to draw a picture for my process, showing the
complete 4 GByte address range, showing which addresses/volumes are reserved,
committed and shared and for which purpose.
How much memory is really used, and what is in the page file is not the
question here.
I am using the performance monitor to monitor the memory usages but I can
not figure out how to get the information I need.
According to one source the “\Process(<myprocess>)\Private Bytes†give me
the bytes exclusive committed to <myprocess>, including the used DLL’s. All
located in the virtual memory below address 80000000h (user memory). This is
also what I see when I use the “Process Walkerâ€, however Process Walker shows
only the first 2 GByte and does not give any clue about sharing.
On the other side, I am reading that DLLs are shared amongst the different
processes and are therefore located above address 80000000h (System memory).
The needed memory is not counted in the private bytes. I suspect they are
counted in the \Process(<myprocess>)\Pool Nonpaged Bytes and
\Process(<myprocess>)\Pool Paged Bytes counters amongst with other system
code and resources. But when I compare the working set of my process, it is
bigger than the sum of the private bytes, Pool Nonpaged Bytes and Pool Paged
Bytes of my process which rejects this assumption.
To get more confused, I am also reading that the private bytes do count the
shared DLL’s. So you see, the more I read the more I get confused.
Can someone get my on the right track?
Filip.