Java (Java Agent, Installation, JVM, and Controller Installation)

cancel
Showing results for 
Search instead for 
Did you mean: 

Object instance tracking for interfaces and abstract classes

Wanderer

Object instance tracking for interfaces and abstract classes

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?

Object instance tracking for interfaces and abstract classes
1 REPLY
Employee

Re: Object instance tracking for interfaces and abstract classes

Hi,

 

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:

 

  • Access the controller URL with allowObjectActivityTraceOnAllObjects=true. For example:
    http://<controller-host>:<controller-port>/controller/?allowObjectActivityTraceOnAllObjects=true

    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.

 

Doc: https://docs.appdynamics.com/display/PRO44/Object+Instance+Tracking+for+Java

Please let us know if there is any disconnect.

 

Thanks,

Atyuha