Class storage

The serverside class storage is a specialized storage that contain all loaded classes of the agents. 

Usages

  • Basis for the server side instrumentation (matches the configuration against the classes and keeps track of interfaces and superclasses)
  • Basis for the configuration interface to allow the the user to select the methods/classes/etc. he wants to instrument

Design decisions

  • It is possible that one class/interface/annotation with the same name is loaded with different bytecode. We do not directly model all different versions, but only keep one instance for any FQN. If we get another bytecode (by hash), we add the hash and merge the method / annotation / interface definition (always add, no remove). This allows us to always instrument all, sometimes a bit too much. As we still have the bytecode we can still differentiate with methods were provided with which version of the class if we for example want to display the information to the user interface