Today we have low memory issues in one of our servers.While analyzing this through leak memory analysis snapshot i cam across some of the memory is not free up by dynatrace agent.PFA screenshot for your reference.
Could you please tell me why dynatarce agent does not free the memory?dynatrace-leak.png
I'm not a memory expert, but the tag objects in there are used to trace your code and objects, so if your objects are still in memory the tags will be as well. Someone else may be able to explain it better but that is not unusual or unexpected.
And if you look at the GC sizes you see it is ~300Kb whereas the Thread Pool worker above it is 17.23Mb so it is less than 2% of the footprint of that one object alone.
I agree with @James K. agent has to allocate some memory that is needed to operate and analyze of your application. Agent uses maximim of 40MB memory. As James pointed out it is not root cause of your situation.
You have to be careful while making memory dumps, they can stop your application for some time because they are working like GC while reading memory. It is important when you are doing it in production.
An object in memory is there because there is something that holds a reference to it. Once all references to an object are removed, then the object is a candidate to be deleted at the next garbage collection event. There are multiple types of references and AppMon uses soft references for many of these objects. This means that AppMon can never be the reason an object is still being held, it is held only because another object holds a reference, namely a hard reference.
This means (as stated by other posters) you can rest assured that when performing Memory Analysis, dynatrace references are not the reason a given object is still in existence. Use the BackReference capability to see a complete list of all objects that hold a reference to a given object, this will help identify all the possible culprits that are holding an object alive.