cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

.NET process memory vs Used memory ?

danielbr
Helper

Hello,

Our customer is suspecting a memory leak due to slow down during heavy traffic.

We've taken a memory dump in order to investigate the matter, but we are unsure of the meaning of the results:

We noticed that the .NET process memory had increased significantly (1 GB), but did not shrink back to its initial sizes when traffic had stopped. "Used Memory" metric remained at very low values.

Is this normal behavior for .NET process memory? Will the .NET process memory actually become available in case it is required?

Daniel

5 REPLIES 5

Babar_Qayyum
Leader

Hello Daniel,

A memory leak is an allocation of memory by the application that is not freed again when the memory is not used anymore. The obvious sign of a memory leak is growing memory consumption with constant load on your application.

For better understanding of the causes of memory leaks and the diagnosis process, check the following documentation link:

https://community.dynatrace.com/community/display/...

Regards,

Babar

danielbr
Helper

Hello Babar,

Thank you for your answer - we understand what a memory leak is. What we are trying to understand is what is the meaning of having .Net process memory inflation?

Is this memory taken or will it free up when another activity requires it?

Daniel.

Babar_Qayyum
Leader

Hello Daniel,

The overal memory consumed for the physical host and the heap consumed by each instrumented process.

Memory increases for two reasons: A bad GC memory setting or an application problem. The application problem is either a memory leak or one of the several other memory problems.

If the memory is consistently high, with GCs, but no OutOfMemory errors, analyze the constant high memory usage. Identify how GC impacts your response time. If memory increases and you get an, try to pinpoint memory leaks.

If memory increases slowly, and a GC decreases memory, but it increases again, check your GC/memory settings. They may be incorrect.

If you have many GCs and volatile memory, but your GC settings are correct, your transactions may consume too much memory. Analyze the transaction memory usage.

I hope the above information will be helpful to understand the memory inflation.

Regards,

Babar

danielbr
Helper

Hi Bab,

I'm just asking if "process memory" metric indicates memory that had is taken and cannot be allocated.

If someone has the answer to that - i'd appreciate it.

Daniel

Babar_Qayyum
Leader

Hello Daniel,

I found the following descriptions about memory:

  • "Process memory" is the memory the whole JVM process is using, including memory required by the JVM itself or native memory (e.g. DirectByteBuffer).
  • "Maximum memory" is what the JVM has set as XmX, i.e. the maximum amount of Heap available.
  • "Used Memory" is the amount of memory that is "occupied" at the time the Snapshot has been created.

Similar discussions you can find in the following post:

https://answers.dynatrace.com/questions/96157/proc...

Regards,

Babar