0

Good afternoon,
In my company regularly we are dealing with memory leaks, and therefore every installation has a procdump installed, in order to be able to take memory dump for investigation purposes.

Now my customer is complaining about a process, which is normally running at ±500Mb, going to +3Gb in memory usage.

I asked the customer to take a dump, using procdump, which is normal procedure, but the customer answers that the launch of the procdump initiates a memory usage towards 3Gb, making the dump unusable.

Is this even possible? How can a process like procdump increase the memory usage of a process, while taking the dump (and how can this be avoided)?

Thanks in advance
Dominique

Dominique
  • 16,450
  • 15
  • 56
  • 112
  • 1
    What is your definition of "Memory usage"? If it is present memory, then taking a memory dump will make everything present because you have to read it into memory before writing it to the dump file. – Raymond Chen Sep 18 '18 at 13:35
  • @RaymondChen: when a process is running, you can use task manager (Memory (private working set)) in order to know the memory usage. The corresponding dump generally has a similar size of that value. Now, however, it seems that this value in task manager is ±500Mb, but when the command "procdump" is launched, the value within that column goes up to ±3Gb and the generated dump also has a size of ±3Gb. – Dominique Sep 18 '18 at 13:39
  • 1
    A full dump will contain all data, so you want to look at private data + shared data. This is definitely more than just working set. Creating the dump file will pull all that memory in and therefore add it to the working set (although it will exit the working set once there is memory pressure again). – Raymond Chen Sep 18 '18 at 19:01
  • @RaymondChen: so it is normal for the memory dump to be larger than the working set, as stated in the task manager, but what about the fact that, taking a memory dump, seems to increase the memory set? Is that even possible, or is that just a coincidence? – Dominique Sep 19 '18 at 07:30
  • 1
    The working set is the memory the program is actively using, but a full memory dump captures **all** accessible memory, which is significantly more than the working set. The act of reading the memory (in order to write it to the dump file) causes it to be considered "used", and that causes the working set to increase. – Raymond Chen Sep 20 '18 at 00:52

1 Answers1

0

No, it seems not to be possible, but there might be catches: in my particular case, our customers monitor memory usage of processes, one time with and another time without shared data (like pagefile usage).

If such a question ever pops up, always verify if the user is monitoring the correct memory usage.

@Raymond: thanks for your quick replies and sorry for the inconvenience

Dominique
  • 16,450
  • 15
  • 56
  • 112