1. A computer-implemented method for instrumenting an application program using separate threads, the method comprising: executing the application program via a first execution thread of a processor; and executing, in a background thread separate from the first execution thread, a polling thread within the processor, wherein the polling thread is configured to: maintain an object graph of the application program, the object graph comprising a set of application objects in use by the application program; identify a first annotation specifying a navigation entry point of the object graph of the application program and returning an instance of a profiler object; navigate, starting from the navigation entry point, the object graph of the application program in order to locate an instance of an application object, of the set of application objects; identify a property and a function of the instance of the application object to be monitored by the polling thread, wherein the property and the function are specified by a second annotation within the application program; construct a management object referencing the located instance of the application object; and register the management object with a management server to produce the instrumented application program configured to monitor the property and the function of the application object while executing the application program.