In my project we are using a small profiling tool for Java. It shows all objects loaded into memory by our application and reflects changes in the objects in real-time. We mostly use it for debugging.
My question is: How can it work? How does an external application know what my app has loaded into memory? Is there some kind of API available for it?