Click the Start a free trial link to start a 15-day SaaS trial of our product and join our community as a trial user. If you are an existing customer do not start a free trial.
AppDynamics customers and established members should click the sign in button to authenticate.
It looks like the dialog for adding a custom class for object instance tracking allows you to specify an interface or an abstract class. As interfaces or abstract classes cannot be instantiated, one would expect the semantics of this to add object instance tracking for all concrete subclasses of the given class/interface. Is that how it works?
For example, I added object instance tracking for the interface java.util.concurrent.ScheduledExecutorService, and I am pretty sure that my app creates a number of java.util.concurrent.ScheduledThreadPoolExecutor objects (which is a concrete implementation of ScheduledExecutorService). However the instance count constantly remains at zero.
Ideally, I'd like OIT to behave as described (mainly because that would be the most convenient behavior). If that's not how it's supposed to work, the AppDynamics UI should probably prevent users from entering class names of non-concrete classes.
Can someone clarify how OIT deals with abstract classes and interfaces?
AppDynamics does not perform allocation tracking for core Java classes by default, since doing so would add significant system overhead. However, it is possible to track core classes on a short-term basis (for example, while troubleshooting) or in pre-production environments.
If you want to track all objects, then you can use the following controller property:
Note that tracking allocation for the core Java classes may cause high overhead. Use this at your own risk.
We do not turn this on by default because it causes a lot more tracking and therefore much higher overhead on the agent side.
Also,please share the agent log and screenshot depicting the issue.
Please let us know if there is any disconnect.